커뮤니티
문의
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;
}
==============
이전글