커뮤니티
문의드립니다
2020-04-05 23:59:38
745
글번호 137558
안녕하세요
아래 수식에서 상한가 다음날에만 매수진입
1차 or 2차 or 3차까지 매수가 되어서 청산이 되면 더이상 진입되지않게 수식 변경 부탁드립니다
예를들면 상한가 다음날에 1차 매수후 청산이 되면 더이상 진입금지
input : 금액(10000000);
var : vol(0);
if MarketPosition == 0 and L > DayHigh*0.82 Then
{
vol = Floor((금액*0.3)/min(NextBarOpen,DayHigh*0.82));
buy("b1",atlimit,DayHigh*0.82,vol);
}
if MarketPosition == 1 then
{
if MaxEntries == 1 and L > DayHigh*0.78 Then
{
vol = Floor((금액*0.3)/min(NextBarOpen,DayHigh*0.78));
buy("b2",atlimit,DayHigh*0.78,vol);
}
if MaxEntries == 2 and L > DayHigh*0.75 Then
{
vol = Floor((금액*0.3)/min(NextBarOpen,DayHigh*0.75));
buy("b3",atlimit,DayHigh*0.75,vol);
}
if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bp1" Then
Condition1 = true;
if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bp2" Then
Condition2= true;
if Condition1 == false Then
ExitLong("bp1",atlimit,AvgEntryPrice*1.025,"",floor(MaxContracts*0.8),1);
if Condition2 == false Then
ExitLong("bp2",atlimit,AvgEntryPrice*1.035);
if MaxEntries == 3 then
ExitLong("bl",AtStop,AvgEntryPrice*0.92);
}
SetStopEndofday(151000);
답변 1
예스스탁 예스스탁 답변
2020-04-06 14:12:54
안녕하세요
예스스탁입니다.
input : 금액(10000000);
var : vol(0);
var : 상한가(0), UpLimit(0),entry(0);
var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0);
if date >= 19981207 then {
if date < 20050328 && CodeCategory() == 2 then
UpLimit = (BP[0] * 1.12);
Else if date >= 20050328 and date < 20150615 Then
UpLimit = (BP[0] * 1.15);
Else
UpLimit = (BP[0] * 1.30);
if CodeCategory() == 2 then
{
if date >= 20030721 then
{
up1 = int(UpLimit/100+0.00001)*100;
up2 = int(UpLimit/100+0.00001)*100;
up3 = int(UpLimit/100+0.00001)*100;
up4 = int(UpLimit/50+0.00001)*50;
up5 = int(UpLimit/10+0.00001)*10;
up6 = int(UpLimit/5+0.00001)*5;
up7 = int(UpLimit/1+0.00001)*1;
}
else
{
up1 = int(UpLimit/1000+0.00001)*1000;
up2 = int(UpLimit/500+0.00001)*500;
up3 = int(UpLimit/100+0.00001)*100;
up4 = int(UpLimit/50+0.00001)*50;
up5 = int(UpLimit/10+0.00001)*10;
up6 = int(UpLimit/10+0.00001)*10;
up7 = int(UpLimit/1+0.00001)*1;
}
}
Else
{
up1 = int(UpLimit/1000+0.00001)*1000;
up2 = int(UpLimit/500+0.00001)*500;
up3 = int(UpLimit/100+0.00001)*100;
up4 = int(UpLimit/50+0.00001)*50;
up5 = int(UpLimit/10+0.00001)*10;
up6 = int(UpLimit/5+0.00001)*5;
up7 = int(UpLimit/1+0.00001)*1;
}
if CodeCategory() == 1 || CodeCategory() == 2 then
{
if sdate < 20101004 Then
{
If BP >= 500000 Then
상한가 = up1;
Else If BP >= 100000 Then
상한가 = iff(up2>=500000, up1, up2);
Else If BP >= 50000 Then
상한가 = iff(up3>=100000, up2, up3);
Else If BP >= 10000 Then
상한가 = iff(up4>=50000, up3, up4);
Else If BP >= 5000 Then
상한가 = iff(up5>=10000, up4, up5);
Else If BP >= 1000 Then
상한가 = iff(up5>=5000, up5, up6);
Else
상한가 = iff(up6>=1000, up6, up6);
}
Else
{
If BP >= 500000 Then
상한가 = up1;
Else If BP >= 100000 Then
상한가 = iff(up2>=500000, up1, up2);
Else If BP >= 50000 Then
상한가 = iff(up3>=100000, up2, up3);
Else If BP >= 10000 Then
상한가 = iff(up4>=50000, up3, up4);
Else If BP >= 5000 Then
상한가 = iff(up5>=10000, up4, up5);
Else If BP >= 1000 Then
상한가 = iff(up5>=5000, up5, up6);
Else
상한가 = iff(up6>=1000, up6, up7);
}
}
else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF
상한가 = up6;
}
}
if sdate != sdate[1] then
{
entry = 0;
Condition1 = false;
if DayHigh(1) >= 상한가[1] Then
Condition1 = true;
}
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
entry = entry+1;
if MarketPosition == 0 and L > DayHigh*0.82 and Condition1 == true and entry < 1 Then
{
vol = Floor((금액*0.3)/min(NextBarOpen,DayHigh*0.82));
buy("b1",atlimit,DayHigh*0.82,vol);
}
if MarketPosition == 1 then
{
if MaxEntries == 1 and L > DayHigh*0.78 Then
{
vol = Floor((금액*0.3)/min(NextBarOpen,DayHigh*0.78));
buy("b2",atlimit,DayHigh*0.78,vol);
}
if MaxEntries == 2 and L > DayHigh*0.75 Then
{
vol = Floor((금액*0.3)/min(NextBarOpen,DayHigh*0.75));
buy("b3",atlimit,DayHigh*0.75,vol);
}
if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bp1" Then
Condition1 = true;
if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bp2" Then
Condition2= true;
if Condition1 == false Then
ExitLong("bp1",atlimit,AvgEntryPrice*1.025,"",floor(MaxContracts*0.8),1);
if Condition2 == false Then
ExitLong("bp2",atlimit,AvgEntryPrice*1.035);
if MaxEntries == 3 then
ExitLong("bl",AtStop,AvgEntryPrice*0.92);
}
SetStopEndofday(151000);
즐거운 하루되세요
> chun0711 님이 쓴 글입니다.
> 제목 : 문의드립니다
> 안녕하세요
아래 수식에서 상한가 다음날에만 매수진입
1차 or 2차 or 3차까지 매수가 되어서 청산이 되면 더이상 진입되지않게 수식 변경 부탁드립니다
예를들면 상한가 다음날에 1차 매수후 청산이 되면 더이상 진입금지
input : 금액(10000000);
var : vol(0);
if MarketPosition == 0 and L > DayHigh*0.82 Then
{
vol = Floor((금액*0.3)/min(NextBarOpen,DayHigh*0.82));
buy("b1",atlimit,DayHigh*0.82,vol);
}
if MarketPosition == 1 then
{
if MaxEntries == 1 and L > DayHigh*0.78 Then
{
vol = Floor((금액*0.3)/min(NextBarOpen,DayHigh*0.78));
buy("b2",atlimit,DayHigh*0.78,vol);
}
if MaxEntries == 2 and L > DayHigh*0.75 Then
{
vol = Floor((금액*0.3)/min(NextBarOpen,DayHigh*0.75));
buy("b3",atlimit,DayHigh*0.75,vol);
}
if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bp1" Then
Condition1 = true;
if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bp2" Then
Condition2= true;
if Condition1 == false Then
ExitLong("bp1",atlimit,AvgEntryPrice*1.025,"",floor(MaxContracts*0.8),1);
if Condition2 == false Then
ExitLong("bp2",atlimit,AvgEntryPrice*1.035);
if MaxEntries == 3 then
ExitLong("bl",AtStop,AvgEntryPrice*0.92);
}
SetStopEndofday(151000);
다음글
이전글