커뮤니티

문의

프로필 이미지
송아지
2008-07-08 21:18:53
738
글번호 16075
답변완료
1.아래 첨부식이 분할손절과 분할청산후 재진입 될수 있도록 수정 부탁 드립니다. == input : Period(1); var : count(0); var1 = 1300000+GrossProfit; var2 = int((var1/(Close*100000))); Count = 0 ; for Value1 = 0 to 10 { if EntryDate( Value1 ) == sdate then Count = Count + 1; } #1. 진입 If count < 1 Then { If stime >= 091000 And stime < 140000 and sdate==CURRENTDATE Then { if Data2(crossdown(ma(c,5),ma(c,20))) Then { Buy("a1",Atmarket,def,var2); }}} #2.재진입 If count < 2 Then { If stime >= 091000 And stime < 140000 and sdate==CURRENTDATE and (IsExitName("b4",1) or IsExitName("b5",1) or IsExitName("c",1) or IsExitName("c",4)) Then { if Data2(crossdown(ma(c,5),ma(c,20))) then { Buy("a2",Atmarket,def,var2); }}} #4.청산 if MarketPosition() == 1 Then{ if MarketPosition()[1] != 1 then{ var11 = CurrentContracts(); //진입수량 var12 = Round(CurrentContracts*0.3,0); //진입수량의 30% var13 = var11-var12*2;//진입수량의 40% } if CurrentContracts() == var11 Then exitlong("b1",Atlimit,EntryPrice*1.2,"",var12,1); if CurrentContracts() == var11-var12 Then exitlong("b2",Atlimit,EntryPrice*1.45,"",var12,1); if CurrentContracts() == var13 Then exitlong("b3",Atlimit,EntryPrice*1.9,"",var13,1); } if MarketPosition() != 0 Then{ if highest(H,BarsSinceEntry()) >= EntryPrice()*1.2 then { ExitLong("b4",Atstop,entryprice+0.05); }} if MarketPosition() != 0 Then{ if highest(H,BarsSinceEntry()) >= EntryPrice()*1.2 and highest(H,BarsSinceEntry()) < EntryPrice()*1.45 then { ExitLong("b5",Atstop,entryprice); }} #5.손절 if MarketPosition() == 1 Then{ if MarketPosition()[1] != 1 then{ var21 = CurrentContracts(); //진입수량 var22 = Round(CurrentContracts*0.3,0); //진입수량의 30% var23 = var21-var22*2;//잔여수량 40% } if CurrentContracts() == var21 And highest(H,BarsSinceEntry())>=entryprice*1.1 And highest(H,BarsSinceEntry())<entryprice*1.2 Then exitlong("c1",Atstop,highest(H,BarsSinceEntry())*0.95,"",var22,1); if CurrentContracts() == var21-var22 And highest(H,BarsSinceEntry())>=entryprice*1.1 And highest(H,BarsSinceEntry())<entryprice*1.2 Then exitlong("c2",Atstop,highest(H,BarsSinceEntry())*0.90,"",var22,1); if CurrentContracts() == var23 And highest(H,BarsSinceEntry())>=entryprice*1.1 And highest(H,BarsSinceEntry())<entryprice*1.2 and Data2(crossup(ma(c,5),ma(c,20)))Then exitlong("c3",Atmarket,def,"",var23,1); } if MarketPosition() == 1 Then{ if MarketPosition()[1] != 1 then{ var31 = CurrentContracts(); //진입수량 var32 = Round(CurrentContracts*0.3,0); //진입수량의 30% var33 = var31-var32*2;//잔여수량 40% } if CurrentContracts() == var31 And highest(H,BarsSinceEntry())<entryprice*1.1 Then exitlong("c4",Atstop,EntryPrice*0.95,"",var32,1); if CurrentContracts() == var31-var32 And highest(H,BarsSinceEntry())<entryprice*1.1 Then exitlong("c5",Atstop,EntryPrice*0.93,"",var32,1); if CurrentContracts() == var33 And highest(H,BarsSinceEntry())<entryprice*1.1 and Data2(crossup(ma(c,5),ma(c,20)))Then exitlong("c6",Atmarket,def,"",var33,1); } #6.당일청산 If MarketPosition()==1 And stime==144500 Then { exitlong("d",Atmarket); } ============ 2. 아래식은 data 2 매수매도비가 데드크로스 발생후 봉 갯수를 리턴하는 식으로 작성해 본것인데 잘 안되서요. 수정부탁드립니다. 그리고 골드크로수 발생후 봉갰수 리턴하는식도 부탁드립니다. if Crossdown(data2(bids), data2(asks)) Then{ barsincedown = 0; } if !(Crossdown(data2(bids), data2(asks)) Then{ barsincedown = barsincedown[1]+1; } ==============
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2008-07-09 10:02:58

안녕하세요 예스스탁입니다. 1. 분할로 청산되지 않는 청산이 B4와 B5이므로 IsExitName("B4",1) == False and IsExitName("B5",1) == False 전 청산이 B4와 B5가 아니다라고 하시면 됩니다. input : Period(1); var : count(0); var1 = 1300000+GrossProfit; var2 = int((var1/(Close*100000))); Count = 0 ; for Value1 = 0 to 10 { if EntryDate( Value1 ) == sdate then Count = Count + 1; } #1. 진입 If count < 1 Then { If stime >= 091000 And stime < 140000 and sdate==CURRENTDATE Then { if Data2(crossdown(ma(c,5),ma(c,20))) Then { Buy("a1",Atmarket,def,var2); }}} #2.재진입 If count < 2 Then { If stime >= 091000 And stime < 140000 and sdate==CURRENTDATE and (IsExitName("b4",1) or IsExitName("b5",1) or IsExitName("c",1) or IsExitName("c",4)) Then { if Data2(crossdown(ma(c,5),ma(c,20))) then { Buy("a2",Atmarket,def,var2); }}} if MarketPosition() == 0 and MarketPosition()[1] != 0 and //청산완료되어 무포지션 상태 IsExitName("B4",1) == False and IsExitName("B5",1) == False then{ //전 청산이 B4와 B5가 아닐때 buy(); } #4.청산 if MarketPosition() == 1 Then{ if MarketPosition()[1] != 1 then{ var11 = CurrentContracts(); //진입수량 var12 = Round(CurrentContracts*0.3,0); //진입수량의 30% var13 = var11-var12*2;//진입수량의 40% } if CurrentContracts() == var11 Then exitlong("b1",Atlimit,EntryPrice*1.2,"",var12,1); if CurrentContracts() == var11-var12 Then exitlong("b2",Atlimit,EntryPrice*1.45,"",var12,1); if CurrentContracts() == var13 Then exitlong("b3",Atlimit,EntryPrice*1.9,"",var13,1); } if MarketPosition() != 0 Then{ if highest(H,BarsSinceEntry()) >= EntryPrice()*1.2 then { ExitLong("b4",Atstop,entryprice+0.05); } } if MarketPosition() != 0 Then{ if highest(H,BarsSinceEntry()) >= EntryPrice()*1.2 and highest(H,BarsSinceEntry()) < EntryPrice()*1.45 then { ExitLong("b5",Atstop,entryprice); } } #5.손절 if MarketPosition() == 1 Then{ if MarketPosition()[1] != 1 then{ var21 = CurrentContracts(); //진입수량 var22 = Round(CurrentContracts*0.3,0); //진입수량의 30% var23 = var21-var22*2;//잔여수량 40% } if CurrentContracts() == var21 And highest(H,BarsSinceEntry())>=entryprice*1.1 And highest(H,BarsSinceEntry())<entryprice*1.2 Then exitlong("c1",Atstop,highest(H,BarsSinceEntry())*0.95,"",var22,1); if CurrentContracts() == var21-var22 And highest(H,BarsSinceEntry())>=entryprice*1.1 And highest(H,BarsSinceEntry())<entryprice*1.2 Then exitlong("c2",Atstop,highest(H,BarsSinceEntry())*0.90,"",var22,1); if CurrentContracts() == var23 And highest(H,BarsSinceEntry())>=entryprice*1.1 And highest(H,BarsSinceEntry())<entryprice*1.2 and Data2(crossup(ma(c,5),ma(c,20)))Then exitlong("c3",Atmarket,def,"",var23,1); } if MarketPosition() == 1 Then{ if MarketPosition()[1] != 1 then{ var31 = CurrentContracts(); //진입수량 var32 = Round(CurrentContracts*0.3,0); //진입수량의 30% var33 = var31-var32*2;//잔여수량 40% } if CurrentContracts() == var31 And highest(H,BarsSinceEntry())<entryprice*1.1 Then exitlong("c4",Atstop,EntryPrice*0.95,"",var32,1); if CurrentContracts() == var31-var32 And highest(H,BarsSinceEntry())<entryprice*1.1 Then exitlong("c5",Atstop,EntryPrice*0.93,"",var32,1); if CurrentContracts() == var33 And highest(H,BarsSinceEntry())<entryprice*1.1 and Data2(crossup(ma(c,5),ma(c,20)))Then exitlong("c6",Atmarket,def,"",var33,1); } #6.당일청산 If MarketPosition()==1 And stime==144500 Then { exitlong("d",Atmarket); } 2. var : barsincedown(0,data2),barsinceup(0,data2); if Crossdown(data2(bids), data2(asks)) Then barsincedown = 0; if Crossup(data2(bids), data2(asks)) Then barsinceup = 0; if Data2(bids) < data2(asks) Then barsincedown = barsincedown+1; if Data2(bids) > data2(asks) Then barsinceup = barsinceup+1; plot1(barsincedown); plot2(barsinceup); 즐거운 하루되세요 > 송아지 님이 쓴 글입니다. > 제목 : 문의 > 1.아래 첨부식이 분할손절과 분할청산후 재진입 될수 있도록 수정 부탁 드립니다. == input : Period(1); var : count(0); var1 = 1300000+GrossProfit; var2 = int((var1/(Close*100000))); Count = 0 ; for Value1 = 0 to 10 { if EntryDate( Value1 ) == sdate then Count = Count + 1; } #1. 진입 If count < 1 Then { If stime >= 091000 And stime < 140000 and sdate==CURRENTDATE Then { if Data2(crossdown(ma(c,5),ma(c,20))) Then { Buy("a1",Atmarket,def,var2); }}} #2.재진입 If count < 2 Then { If stime >= 091000 And stime < 140000 and sdate==CURRENTDATE and (IsExitName("b4",1) or IsExitName("b5",1) or IsExitName("c",1) or IsExitName("c",4)) Then { if Data2(crossdown(ma(c,5),ma(c,20))) then { Buy("a2",Atmarket,def,var2); }}} #4.청산 if MarketPosition() == 1 Then{ if MarketPosition()[1] != 1 then{ var11 = CurrentContracts(); //진입수량 var12 = Round(CurrentContracts*0.3,0); //진입수량의 30% var13 = var11-var12*2;//진입수량의 40% } if CurrentContracts() == var11 Then exitlong("b1",Atlimit,EntryPrice*1.2,"",var12,1); if CurrentContracts() == var11-var12 Then exitlong("b2",Atlimit,EntryPrice*1.45,"",var12,1); if CurrentContracts() == var13 Then exitlong("b3",Atlimit,EntryPrice*1.9,"",var13,1); } if MarketPosition() != 0 Then{ if highest(H,BarsSinceEntry()) >= EntryPrice()*1.2 then { ExitLong("b4",Atstop,entryprice+0.05); }} if MarketPosition() != 0 Then{ if highest(H,BarsSinceEntry()) >= EntryPrice()*1.2 and highest(H,BarsSinceEntry()) < EntryPrice()*1.45 then { ExitLong("b5",Atstop,entryprice); }} #5.손절 if MarketPosition() == 1 Then{ if MarketPosition()[1] != 1 then{ var21 = CurrentContracts(); //진입수량 var22 = Round(CurrentContracts*0.3,0); //진입수량의 30% var23 = var21-var22*2;//잔여수량 40% } if CurrentContracts() == var21 And highest(H,BarsSinceEntry())>=entryprice*1.1 And highest(H,BarsSinceEntry())<entryprice*1.2 Then exitlong("c1",Atstop,highest(H,BarsSinceEntry())*0.95,"",var22,1); if CurrentContracts() == var21-var22 And highest(H,BarsSinceEntry())>=entryprice*1.1 And highest(H,BarsSinceEntry())<entryprice*1.2 Then exitlong("c2",Atstop,highest(H,BarsSinceEntry())*0.90,"",var22,1); if CurrentContracts() == var23 And highest(H,BarsSinceEntry())>=entryprice*1.1 And highest(H,BarsSinceEntry())<entryprice*1.2 and Data2(crossup(ma(c,5),ma(c,20)))Then exitlong("c3",Atmarket,def,"",var23,1); } if MarketPosition() == 1 Then{ if MarketPosition()[1] != 1 then{ var31 = CurrentContracts(); //진입수량 var32 = Round(CurrentContracts*0.3,0); //진입수량의 30% var33 = var31-var32*2;//잔여수량 40% } if CurrentContracts() == var31 And highest(H,BarsSinceEntry())<entryprice*1.1 Then exitlong("c4",Atstop,EntryPrice*0.95,"",var32,1); if CurrentContracts() == var31-var32 And highest(H,BarsSinceEntry())<entryprice*1.1 Then exitlong("c5",Atstop,EntryPrice*0.93,"",var32,1); if CurrentContracts() == var33 And highest(H,BarsSinceEntry())<entryprice*1.1 and Data2(crossup(ma(c,5),ma(c,20)))Then exitlong("c6",Atmarket,def,"",var33,1); } #6.당일청산 If MarketPosition()==1 And stime==144500 Then { exitlong("d",Atmarket); } ============ 2. 아래식은 data 2 매수매도비가 데드크로스 발생후 봉 갯수를 리턴하는 식으로 작성해 본것인데 잘 안되서요. 수정부탁드립니다. 그리고 골드크로수 발생후 봉갰수 리턴하는식도 부탁드립니다. if Crossdown(data2(bids), data2(asks)) Then{ barsincedown = 0; } if !(Crossdown(data2(bids), data2(asks)) Then{ barsincedown = barsincedown[1]+1; } ==============