예스스탁
예스스탁 답변
2022-03-23 10:37:38
안녕하세요
예스스탁입니다.
예스스팟은 차트기반언어가 아닙니다.
예스랭귀지의 시스템식으로 변환해 드립니다.
1
input : BuyA_Leng(20) // 이동평균기간
, BuyA_DV(2) // 표준편차
, BuyA_ChoiceType(2) // 상한, 중간, 하한밴드 선택
, BB_Back(0)
, Ntick(100)
, 진입수량(1)
, 최대진입(3)
;
Var : TickSize( 0 );
TickSize = PriceScale; // 호가 단위
var : BuyA_PriceVar(0), BuyA_Price1(0), BuyA_Price2(0), BuyA_Price3(0), BuyA_V3(0), BuyA_Result(FALSE);
BuyA_PriceVar = (High+Low+Open)/3;
BuyA_Price2 = MA(BuyA_PriceVar, BuyA_Leng);
BuyA_Price1 = BuyA_Price2 + std(BuyA_PriceVar, BuyA_Leng)*BuyA_DV;
BuyA_Price3 = BuyA_Price2 - std(BuyA_PriceVar, BuyA_Leng)*BuyA_DV;
If BuyA_ChoiceType == 0 Then // 상한밴드 선택
Begin
BuyA_V3 = BuyA_Price1;
End
Else
If BuyA_ChoiceType == 1 Then // 중간밴드 선택
Begin
BuyA_V3 = BuyA_Price2;
End
Else // 하한밴드 선택
Begin
BuyA_V3 = BuyA_Price3;
End;
BuyA_Result = FALSE;
IF C <= BuyA_V3 Then
BuyA_Result = TRUE;
if MarketPosition <= 0 and ( BuyA_Result[BB_Back] ) Then
Begin
Buy("B1",OnClose,DEF,진입수량);
End;
if MarketPosition == 1 And c < latestEntryPrice - TickSize * Ntick And MaxEntries < 최대진입 Then
Buy("B2",OnClose,DEF,진입수량);
2
input : SellA_Leng(20) // 이동평균기간
, SellA_DV(2) // 표준편차
, SellA_ChoiceType(0) // 상한, 중간, 하한밴드 선택
, BB_Back(0)
, Ntick(100)
, 진입수량(1)
, 최대진입(3)
;
var : SellA_PriceVar(0), SellA_Price1(0), SellA_Price2(0), SellA_Price3(0), SellA_V3(0), SellA_Result(FALSE);
Var : TickSize( 0 );
TickSize = PriceScale; // 호가 단위
SellA_PriceVar = (High+Low+Open)/3;
SellA_Price2 = MA(SellA_PriceVar, SellA_Leng);
SellA_Price1 = SellA_Price2+std(SellA_PriceVar, SellA_Leng)*SellA_DV;
SellA_Price3 = SellA_Price2-std(SellA_PriceVar, SellA_Leng)*SellA_DV;
If SellA_ChoiceType == 0 Then // 상한밴드 선택
Begin
SellA_V3 = SellA_Price1;
End
Else
If SellA_ChoiceType == 1 Then // 중간밴드 선택
Begin
SellA_V3 = SellA_Price2;
End
Else // 하한밴드 선택
Begin
SellA_V3 = SellA_Price3;
End;
SellA_Result = FALSE;
IF C >= SellA_V3 Then
SellA_Result = TRUE;
if MarketPosition >= 0 and ( SellA_Result[BB_Back] ) Then
Begin
Sell("S1",OnClose,DEf,진입수량);
End;
if MarketPosition == -1 And c > latestEntryPrice + TickSize * Ntick And MaxEntries < 최대진입 Then
Sell("S2",OnClose,DEF,진입수량);
즐거운 하루되세요
> hong0848 님이 쓴 글입니다.
> 제목 : 수식 문의 드립니다.
> 안녕하세요
키움 수식입니다.
예스스팟으로 변환 한번 해보려고 하는데 아직 실력이 없어서 변환이 무리 인것 같아 도움요청 드립니다.
볼린저 상하단 돌파시 매수 매도 1차 진입 하고 Ntick 떨어지거나 오를경우 하나더 진입하는 수식입니다.
2차 진입 후 더 떨어지거나 오를 경우 추가로 3차진입을 하나 더 변수로 추가 하고 싶습니다. 더불어 주문수량을 2개이든 3개이든 변수로 넣고 싶습니다.
바쁘시겠지만 수식 작성 부탁드립니다.
감사합니다.
// 매수진입 [BuyA : Bolinger Band[20,2] 저가<=하한밴드, ]
[IOG = True]
param : BuyA_Leng(20) // 이동평균기간
, BuyA_DV(2) // 표준편차
, BuyA_ChoiceType(2) // 상한, 중간, 하한밴드 선택
, BB_Back(0)
, Ntick(100)
;
Var : TickSize( 0 );
TickSize = OneTick * PriceScale; // 호가 단위
if MarketPosition > 0 And c < EntryPrice - TickSize * Ntick And EntryPrice>0 Then Buy("B2");
if MarketPosition < 0 And c > EntryPrice + TickSize * Ntick And EntryPrice>0 Then Sell("S2");
var : BuyA_PriceVar(0), BuyA_Price1(0), BuyA_Price2(0), BuyA_Price3(0), BuyA_V3(0), BuyA_Result(FALSE);
BuyA_PriceVar = (High+Low+Open)/3;
BuyA_Price1 = BollBandUpUser(BuyA_PriceVar, BuyA_Leng, BuyA_DV);
BuyA_Price2 = SMA(BuyA_PriceVar, BuyA_Leng);
BuyA_Price3 = BollBandDownUser(BuyA_PriceVar, BuyA_Leng, BuyA_DV);
If BuyA_ChoiceType = 0 Then // 상한밴드 선택
Begin
BuyA_V3 = BuyA_Price1;
End
Else
If BuyA_ChoiceType = 1 Then // 중간밴드 선택
Begin
BuyA_V3 = BuyA_Price2;
End
Else // 하한밴드 선택
Begin
BuyA_V3 = BuyA_Price3;
End;
BuyA_Result = FALSE;
IF C <= BuyA_V3 Then
BuyA_Result = TRUE;
if ( BuyA_Result[BB_Back] ) And !IsEntryName("B1")
Then
Begin
Buy("B1");
End;
/////////////////////////////////////////////////////////////////////////////
// 매도진입 [SellA : Bolinger Band[20,2] 고가>=상한밴드, ]
[IOG = True]
param : SellA_Leng(20) // 이동평균기간
, SellA_DV(2) // 표준편차
, SellA_ChoiceType(0) // 상한, 중간, 하한밴드 선택
;
var : SellA_PriceVar(0), SellA_Price1(0), SellA_Price2(0), SellA_Price3(0), SellA_V3(0), SellA_Result(FALSE);
SellA_PriceVar = (High+Low+Open)/3;
SellA_Price1 = BollBandUpUser(SellA_PriceVar, SellA_Leng, SellA_DV);
SellA_Price2 = SMA(SellA_PriceVar, SellA_Leng);
SellA_Price3 = BollBandDownUser(SellA_PriceVar, SellA_Leng, SellA_DV);
If SellA_ChoiceType = 0 Then // 상한밴드 선택
Begin
SellA_V3 = SellA_Price1;
End
Else
If SellA_ChoiceType = 1 Then // 중간밴드 선택
Begin
SellA_V3 = SellA_Price2;
End
Else // 하한밴드 선택
Begin
SellA_V3 = SellA_Price3;
End;
SellA_Result = FALSE;
IF C >= SellA_V3 Then
SellA_Result = TRUE;
if ( SellA_Result[BB_Back] ) And !IsEntryName("S1")
Then
Begin
Sell("S1");
End;