커뮤니티

재문의_분할매수_분할청산

프로필 이미지
공감n감사
2012-05-21 20:41:43
362
글번호 51192
답변완료
항상 빠른 답변 감사드립니다. 아래의 식에서 분할매수와 분할청산은 제가 원하는대로 됩니다. 그런데, buy1, buy2, buy3가 분할매수로 진입된후, buy2나 buy3가 목표이익청산이 된후 (buy1만 남아있는 상황), 다시 진입하면 안되는데, buy2나 buy3가 계속 반복해서 재진입신호가 나옵니다. 이익청산후에는 buy2와 buy3가 재진입이 안되도록 수정부탁드립니다. 미리 감사드립니다. --------------------------------------------------------------------------- 안녕하세요 예스스탁입니다. 아래식 참고하시기 바랍니다. 각 진입별로 손절과 목표이익을 설정하게 작성했습니다. 첫번째 진입은 목표이익 청산이 없습니다. 첫번째를 제외한 진입은 따로 식내용에 맞춰 진입가격을 계산해 변수에 저장하고 사용하셔야 합니다. 의도와 다르시면 전화 주시기 바랍니다. 02-3453-1060 Input: FastLen(10), SlowLen(500), ChLen(30), TrailBar(160), ReBars(30), stopPer(1.0); Vars: FastMA(0), SlowMA(0),LEntryPrice(0), SEntryPrice(0), LCount(-999), SCount(-999),ATRV(0); FastMA = ma(C , FastLen ); SlowMA = ma(C , SlowLen ); ATRV = ATR(30); If CrossUp(FastMA , SlowMA) and index > 1 then { LEntryPrice = Highest(H , TrailBar )[1]; LCount = index; } If MarketPosition <> 1 AND index < LCount + ChLen then Buy("Buy1", atstop,LEntryPrice,10); If MarketPosition == 1 and CurrentEntries == 1 Then buy("Buy2",AtStop,EntryPrice+(ATR(30)*0.5),10); If MarketPosition == 1 and CurrentEntries == 2 Then buy("Buy3",AtStop,EntryPrice+ATR(30),10); If CrossDown(FastMA , SlowMA) and index > 1 then { SEntryPrice = Lowest(L , TrailBar )[1]; SCount = index; } If MarketPosition <> -1 AND index < SCount + ChLen then Sell ("Sell1", atstop,SEntryPrice,10); If MarketPosition == -1 and CurrentEntries == 1 Then sell("Sell2",AtStop,EntryPrice-(ATRV*0.5),10); If MarketPosition == -1 and CurrentEntries == 2 Then sell("Sell3",AtStop,EntryPrice-ATRV,10); If MarketPosition == 1 then { LCount = -999; ExitLong("LongTStop_1", atstop, Lowest(L , TrailBar ),"Buy1",10,1); ExitLong("LongTStop_2", atstop, Lowest(L , TrailBar ),"Buy2",10,1); ExitLong("LongTStop_3", atstop, Lowest(L , TrailBar ),"Buy3",10,1); } If MarketPosition == -1 then { SCount = -999; ExitShort("ShortTStop_1", atstop, Highest(H , TrailBar),"Sell1",10,1); ExitShort("ShortTStop_2", atstop, Highest(H , TrailBar),"Sell2",10,1); ExitShort("ShortTStop_3", atstop, Highest(H , TrailBar),"Sell3",10,1); } if MarketPosition == 1 Then{ exitlong("bloss1",AtStop,EntryPrice-1,"buy1"); if CurrentEntries == 2 and CurrentEntries[1] == 1 Then value1 = EntryPrice+(ATRV*0.5); exitlong("bProfit2",atlimit,value1+1,"buy2"); exitlong("bloss2",AtStop,value1-1,"buy2"); if CurrentEntries == 3 and CurrentEntries[1] == 2 Then value2 = EntryPrice+ATRV; exitlong("bProfit3",atlimit,value2+2,"buy3"); exitlong("bLoss3",AtStop,value2-2,"buy3"); } if MarketPosition == -1 Then{ ExitShort("sLoss1",AtStop,EntryPrice+1,"sell1"); if CurrentEntries == 2 and CurrentEntries[1] == 1 Then value3 = EntryPrice-(ATRV*0.5); ExitShort("sProfit2",atlimit,value3-1,"sell2"); ExitShort("sLoss2",AtStop,value3+1,"sell2"); if CurrentEntries == 3 and CurrentEntries[1] == 2 Then value3 = EntryPrice-ATRV; ExitShort("sProfit3",atlimit,value4-2,"sell3"); ExitShort("sloss3",AtStop,value4+2,"sell3"); } 즐거운 하루되세요 > 공감n감사 님이 쓴 글입니다. > 제목 : 재문의 드립니다. > 빠른 답변 감사드립니다. 그런데 저의 설명이 좀 부족했나봅니다^^ 이익청산과 손절값이 각계약마다 다르기 때문에 따로따로 해야합니다. 제가 원하는 청산방법은 첫번째 진입은 이익청산이 없고, 두번째 진입은 1포인트(여기서1포인트는 큰 의미가 없고, 그냥 예를 들어 가정을 한거구요, 10포인트가 될수도 있고, atr값이 될수도 있습니다)이익이 생겼을때 이익청산하고, 세번째 진입은 2포인트(이것도 그냥 가정입니다. 20포인트가 될수도 있고, 여러가지....)이상 이익이 나면 청산하도록 하려고 합니다. 간단히 예를 들어 설명하면, 첫번째 진입이 총8포인트 수익이 났다면,두번째 진입은 3포인트 이익이 나면 처음 먼저 청산, 세번째 진입은 세번째 진입가격에서 5포인트 이익이 나면 두번째로 청산합니다. 첫번째 진입이 맨 마지막에 청산됩니다.결과적으로 총 3계약이 16포인트 이익을 내도록 하려고 합니다. 근데 첫번째 진입가격은 entryprice로 정하는데, 두번째와 세번째 진입가격은 어떻게 해야 되는지 모르겠습니다. 두번째와 세번째의 진입가격을 이용해서 이익청산과 손절을 각각 다른 값으로 하고 싶습니다. 부탁드립니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2012-05-22 09:17:22

안녕하세요 예스스탁입니다. Input: FastLen(10), SlowLen(500), ChLen(30), TrailBar(160), ReBars(30), stopPer(1.0); Vars: FastMA(0), SlowMA(0),LEntryPrice(0), SEntryPrice(0), LCount(-999), SCount(-999),ATRV(0); FastMA = ma(C , FastLen ); SlowMA = ma(C , SlowLen ); ATRV = ATR(30); If CrossUp(FastMA , SlowMA) and index > 1 then { LEntryPrice = Highest(H , TrailBar )[1]; LCount = index; } If MarketPosition <> 1 AND index < LCount + ChLen then Buy("Buy1", atstop,LEntryPrice,10); If MarketPosition == 1 and CurrentEntries == 1 Then buy("Buy2",AtStop,EntryPrice+(ATR(30)*0.5),10); If MarketPosition == 1 and CurrentEntries == 2 Then buy("Buy3",AtStop,EntryPrice+ATR(30),10); If CrossDown(FastMA , SlowMA) and index > 1 then { SEntryPrice = Lowest(L , TrailBar )[1]; SCount = index; } If MarketPosition <> -1 AND index < SCount + ChLen then Sell ("Sell1", atstop,SEntryPrice,10); if countif(CurrentContracts < CurrentContracts[1],BarsSinceEntry) < 1 then{ If MarketPosition == -1 and CurrentEntries == 1 and CurrentEntries == MaxEntries Then sell("Sell2",AtStop,EntryPrice-(ATRV*0.5),10); If MarketPosition == -1 and CurrentEntries == 2 and CurrentEntries == MaxEntries Then sell("Sell3",AtStop,EntryPrice-ATRV,10); } If MarketPosition == 1 then { LCount = -999; ExitLong("LongTStop_1", atstop, Lowest(L , TrailBar ),"Buy1",10,1); ExitLong("LongTStop_2", atstop, Lowest(L , TrailBar ),"Buy2",10,1); ExitLong("LongTStop_3", atstop, Lowest(L , TrailBar ),"Buy3",10,1); } If MarketPosition == -1 then { SCount = -999; ExitShort("ShortTStop_1", atstop, Highest(H , TrailBar),"Sell1",10,1); ExitShort("ShortTStop_2", atstop, Highest(H , TrailBar),"Sell2",10,1); ExitShort("ShortTStop_3", atstop, Highest(H , TrailBar),"Sell3",10,1); } if MarketPosition == 1 Then{ exitlong("bloss1",AtStop,EntryPrice-1,"buy1"); if CurrentEntries == 2 and CurrentEntries[1] == 1 Then value1 = EntryPrice+(ATRV*0.5); exitlong("bProfit2",atlimit,value1+1,"buy2"); exitlong("bloss2",AtStop,value1-1,"buy2"); if CurrentEntries == 3 and CurrentEntries[1] == 2 Then value2 = EntryPrice+ATRV; exitlong("bProfit3",atlimit,value2+2,"buy3"); exitlong("bLoss3",AtStop,value2-2,"buy3"); } if MarketPosition == -1 Then{ ExitShort("sLoss1",AtStop,EntryPrice+1,"sell1"); if CurrentEntries == 2 and CurrentEntries[1] == 1 Then value3 = EntryPrice-(ATRV*0.5); ExitShort("sProfit2",atlimit,value3-1,"sell2"); ExitShort("sLoss2",AtStop,value3+1,"sell2"); if CurrentEntries == 3 and CurrentEntries[1] == 2 Then value3 = EntryPrice-ATRV; ExitShort("sProfit3",atlimit,value4-2,"sell3"); ExitShort("sloss3",AtStop,value4+2,"sell3"); } 즐거운 하루되세요 > 공감n감사 님이 쓴 글입니다. > 제목 : 재문의_분할매수_분할청산 > 항상 빠른 답변 감사드립니다. 아래의 식에서 분할매수와 분할청산은 제가 원하는대로 됩니다. 그런데, buy1, buy2, buy3가 분할매수로 진입된후, buy2나 buy3가 목표이익청산이 된후 (buy1만 남아있는 상황), 다시 진입하면 안되는데, buy2나 buy3가 계속 반복해서 재진입신호가 나옵니다. 이익청산후에는 buy2와 buy3가 재진입이 안되도록 수정부탁드립니다. 미리 감사드립니다. --------------------------------------------------------------------------- 안녕하세요 예스스탁입니다. 아래식 참고하시기 바랍니다. 각 진입별로 손절과 목표이익을 설정하게 작성했습니다. 첫번째 진입은 목표이익 청산이 없습니다. 첫번째를 제외한 진입은 따로 식내용에 맞춰 진입가격을 계산해 변수에 저장하고 사용하셔야 합니다. 의도와 다르시면 전화 주시기 바랍니다. 02-3453-1060 Input: FastLen(10), SlowLen(500), ChLen(30), TrailBar(160), ReBars(30), stopPer(1.0); Vars: FastMA(0), SlowMA(0),LEntryPrice(0), SEntryPrice(0), LCount(-999), SCount(-999),ATRV(0); FastMA = ma(C , FastLen ); SlowMA = ma(C , SlowLen ); ATRV = ATR(30); If CrossUp(FastMA , SlowMA) and index > 1 then { LEntryPrice = Highest(H , TrailBar )[1]; LCount = index; } If MarketPosition <> 1 AND index < LCount + ChLen then Buy("Buy1", atstop,LEntryPrice,10); If MarketPosition == 1 and CurrentEntries == 1 Then buy("Buy2",AtStop,EntryPrice+(ATR(30)*0.5),10); If MarketPosition == 1 and CurrentEntries == 2 Then buy("Buy3",AtStop,EntryPrice+ATR(30),10); If CrossDown(FastMA , SlowMA) and index > 1 then { SEntryPrice = Lowest(L , TrailBar )[1]; SCount = index; } If MarketPosition <> -1 AND index < SCount + ChLen then Sell ("Sell1", atstop,SEntryPrice,10); If MarketPosition == -1 and CurrentEntries == 1 Then sell("Sell2",AtStop,EntryPrice-(ATRV*0.5),10); If MarketPosition == -1 and CurrentEntries == 2 Then sell("Sell3",AtStop,EntryPrice-ATRV,10); If MarketPosition == 1 then { LCount = -999; ExitLong("LongTStop_1", atstop, Lowest(L , TrailBar ),"Buy1",10,1); ExitLong("LongTStop_2", atstop, Lowest(L , TrailBar ),"Buy2",10,1); ExitLong("LongTStop_3", atstop, Lowest(L , TrailBar ),"Buy3",10,1); } If MarketPosition == -1 then { SCount = -999; ExitShort("ShortTStop_1", atstop, Highest(H , TrailBar),"Sell1",10,1); ExitShort("ShortTStop_2", atstop, Highest(H , TrailBar),"Sell2",10,1); ExitShort("ShortTStop_3", atstop, Highest(H , TrailBar),"Sell3",10,1); } if MarketPosition == 1 Then{ exitlong("bloss1",AtStop,EntryPrice-1,"buy1"); if CurrentEntries == 2 and CurrentEntries[1] == 1 Then value1 = EntryPrice+(ATRV*0.5); exitlong("bProfit2",atlimit,value1+1,"buy2"); exitlong("bloss2",AtStop,value1-1,"buy2"); if CurrentEntries == 3 and CurrentEntries[1] == 2 Then value2 = EntryPrice+ATRV; exitlong("bProfit3",atlimit,value2+2,"buy3"); exitlong("bLoss3",AtStop,value2-2,"buy3"); } if MarketPosition == -1 Then{ ExitShort("sLoss1",AtStop,EntryPrice+1,"sell1"); if CurrentEntries == 2 and CurrentEntries[1] == 1 Then value3 = EntryPrice-(ATRV*0.5); ExitShort("sProfit2",atlimit,value3-1,"sell2"); ExitShort("sLoss2",AtStop,value3+1,"sell2"); if CurrentEntries == 3 and CurrentEntries[1] == 2 Then value3 = EntryPrice-ATRV; ExitShort("sProfit3",atlimit,value4-2,"sell3"); ExitShort("sloss3",AtStop,value4+2,"sell3"); } 즐거운 하루되세요 > 공감n감사 님이 쓴 글입니다. > 제목 : 재문의 드립니다. > 빠른 답변 감사드립니다. 그런데 저의 설명이 좀 부족했나봅니다^^ 이익청산과 손절값이 각계약마다 다르기 때문에 따로따로 해야합니다. 제가 원하는 청산방법은 첫번째 진입은 이익청산이 없고, 두번째 진입은 1포인트(여기서1포인트는 큰 의미가 없고, 그냥 예를 들어 가정을 한거구요, 10포인트가 될수도 있고, atr값이 될수도 있습니다)이익이 생겼을때 이익청산하고, 세번째 진입은 2포인트(이것도 그냥 가정입니다. 20포인트가 될수도 있고, 여러가지....)이상 이익이 나면 청산하도록 하려고 합니다. 간단히 예를 들어 설명하면, 첫번째 진입이 총8포인트 수익이 났다면,두번째 진입은 3포인트 이익이 나면 처음 먼저 청산, 세번째 진입은 세번째 진입가격에서 5포인트 이익이 나면 두번째로 청산합니다. 첫번째 진입이 맨 마지막에 청산됩니다.결과적으로 총 3계약이 16포인트 이익을 내도록 하려고 합니다. 근데 첫번째 진입가격은 entryprice로 정하는데, 두번째와 세번째 진입가격은 어떻게 해야 되는지 모르겠습니다. 두번째와 세번째의 진입가격을 이용해서 이익청산과 손절을 각각 다른 값으로 하고 싶습니다. 부탁드립니다.