커뮤니티

문의드립니다.

프로필 이미지
잡다백수
2018-02-14 14:59:54
251
글번호 116648
답변완료
도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다. 1. 시스템 Strategy: Darvas by Guppy inputs: Periods( 100 ), ExitNextDay( false ), GhostBoxExit( false ), BreakoutEntry (false ), VolumeEntry( false ), VolumeAvgLen( 10 ), VolumeFactor( 1.5 ) ; variables: BarsSinceDH( 0 ), BarsSinceDL( 0 ), CriticalLow( 0 ), TempD_Low( 0 ), SearchForLow ( false ), D_Low( 0 ), D_High( 0 ), BottomLineNum( 0 ), TopLineNum( 0 ), LeftSideNum( 0 ), RightSideNum( 0 ), CriticalHigh( 0 ), TempD_High( 0 ), DHighLowDiff( 0 ), MyStop( 0 ), MyTrigger( 0 ), DownTrend( 0 ) ; if CurrentBar > Periods then begin BarsSinceDH = BarsSinceDH + 1 ; BarsSinceDL = BarsSinceDL + 1 ; if Low[3] <= CriticalLow[4] and Low[3] <= Low[2] and Low[3] <= Low[1] and Low[3] < Low then begin TempD_Low = Low[3] ; BarsSinceDL = 3 ; end ; if SearchForLow and BarsSinceDL < 6 and BarsSinceDL <= BarsSinceDH then begin D_Low = Low[BarsSinceDL] ; D_High = TempD_High ; SearchForLow = false ; BottomLineNum = TL_New( Date[BarsSinceDH], Time[BarsSinceDH], D_Low, Date[3], Time[3], D_Low ) ; TopLineNum = TL_New( Date[BarsSinceDH], Time[BarsSinceDH], D_High, Date[3], Time[3], D_High ) ; LeftSideNum = TL_New( Date[BarsSinceDH], Time[BarsSinceDH], D_High, Date[BarsSinceDH], Time[BarsSinceDH], D_Low ) ; RightSideNum = TL_New( Date[3], Time[3], D_High, Date[3], Time[3], D_Low ) ; end ; if High[3] >= CriticalHigh[4] and High[3] >= High[2] and High[3] >= High[1] and High[3] > High then begin BarsSinceDH = 3 ; TempD_High = High[3] ; SearchForLow = true ; end ; CriticalHigh = Highest( High, Periods ) ; CriticalLow = Lowest( Low, BarsSinceDH ) ; end ; DHighLowDiff = D_High - D_Low ; if GhostBoxExit and DHighLowDiff > 0 and Close > D_High + DHighLowDiff then begin MyStop = ( IntPortion( ( Close - D_Low ) / DHighLowdiff ) - 1 ) * DHighLowDiff + D_Low ; MyTrigger = MyStop + DHighLowDiff ; end else begin MyStop = D_Low ; MyTrigger = D_High ; end ; if Close crosses under D_Low then DownTrend = 0 else if BreakoutEntry and Close crosses over D_High then DownTrend = 1 else if BreakoutEntry and DownTrend = 1 and BarsSinceDL = 3 then DownTrend = 2 ; if ( BreakoutEntry and DownTrend = 2 ) or BreakoutEntry = false then begin if VolumeEntry then begin if Close crosses over MyTrigger and Volume > Average( Volume, VolumeAvgLen ) * VolumeFactor then Buy next bar market ; end else if Close < MyTrigger then Buy next bar MyTrigger stop ; if ExitNextDay then begin if Low[1] >= MyStop and Low < MyStop then Sell next bar at market ; end else Sell next bar at MyStop stop ; end ; 2. 기타 이전에 begin end는 중괄호라고 말씀해주셨던 것 같은데요. 트레이드스테이션 코드는 Sell next bar at market 이런 주문식 빼고 대부분 동일한가요?
시스템
답변 4
프로필 이미지

예스스탁 예스스탁 답변

2018-02-14 15:21:10

안녕하세요 예스스탁입니다. 1 inputs: Periods( 100 ), ExitNextDay( false ), GhostBoxExit( false ), BreakoutEntry (false ), VolumeEntry( false ), VolumeAvgLen( 10 ), VolumeFactor( 1.5 ) ; variables: BarsSinceDH( 0 ), BarsSinceDL( 0 ), CriticalLow( 0 ), TempD_Low( 0 ), SearchForLow ( false ), D_Low( 0 ), D_High( 0 ), BottomLineNum( 0 ), TopLineNum( 0 ), LeftSideNum( 0 ), RightSideNum( 0 ), CriticalHigh( 0 ), TempD_High( 0 ), DHighLowDiff( 0 ), MyStop( 0 ), MyTrigger( 0 ), DownTrend( 0 ) ; if CurrentBar > Periods then begin BarsSinceDH = BarsSinceDH + 1 ; BarsSinceDL = BarsSinceDL + 1 ; if Low[3] <= CriticalLow[4] and Low[3] <= Low[2] and Low[3] <= Low[1] and Low[3] < Low then begin TempD_Low = Low[3] ; BarsSinceDL = 3 ; end ; if SearchForLow and BarsSinceDL < 6 and BarsSinceDL <= BarsSinceDH then begin D_Low = Low[BarsSinceDL] ; D_High = TempD_High ; SearchForLow = false ; BottomLineNum = TL_New( Date[BarsSinceDH],Time[BarsSinceDH], D_Low, Date[3], Time[3],D_Low ) ; TopLineNum = TL_New( Date[BarsSinceDH],Time[BarsSinceDH], D_High, Date[3], Time[3],D_High ) ; LeftSideNum = TL_New( Date[BarsSinceDH],Time[BarsSinceDH], D_High, Date[BarsSinceDH],Time[BarsSinceDH], D_Low ) ; RightSideNum = TL_New( Date[3], Time[3], D_High,Date[3], Time[3], D_Low ) ; end ; if High[3] >= CriticalHigh[4] and High[3] >= High[2] and High[3] >= High[1] and High[3] > High then begin BarsSinceDH = 3 ; TempD_High = High[3] ; SearchForLow = true ; end ; CriticalHigh = Highest( High, Periods ) ; CriticalLow = Lowest( Low, BarsSinceDH ) ; end; DHighLowDiff = D_High - D_Low ; if GhostBoxExit and DHighLowDiff > 0 and Close > D_High + DHighLowDiff then begin MyStop = ( IntPortion( ( Close - D_Low ) / DHighLowdiff ) - 1 ) * DHighLowDiff + D_Low ; MyTrigger = MyStop + DHighLowDiff ; end else begin MyStop = D_Low ; MyTrigger = D_High ; end; if CrossDown(Close,D_Low) then DownTrend = 0 ; else if BreakoutEntry and crossup(Close,D_High) then DownTrend = 1 ; else if BreakoutEntry and DownTrend == 1 and BarsSinceDL == 3 then DownTrend = 2 ; if (BreakoutEntry and DownTrend == 2 ) or BreakoutEntry == false then begin if VolumeEntry then begin if crossup(Close, MyTrigger) and Volume > ma( Volume, VolumeAvgLen ) * VolumeFactor then Buy("b1",AtMarket); end else if Close < MyTrigger then Buy("b2",AtStop,MyTrigger); if ExitNextDay then begin if Low[1] >= MyStop and Low < MyStop then Sell("s1",AtMarket); end else Sell("s2",AtStop,MyStop); end; 2 기본적인 골격은 비슷하지만 세부적으로 여러 가지 차이점이 있습니다. 문법적으로 보면 예스랭귀지에서는 같다라는 표현이 == 인데, EL에서는 = 이고 예스랭귀지에서는 문장 끝에 항상 ;를 표시하는데 EL은 표시하지 않는 부분도 있습니다. 동일내용의 함수인데 함수명이 다를수 있고 동일 이름이라도 매개변수 지정이 다른 경우들이 있습니다. 즐거운 하루되세요 > 잡다백수 님이 쓴 글입니다. > 제목 : 문의드립니다. > 도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다. 1. 시스템 Strategy: Darvas by Guppy inputs: Periods( 100 ), ExitNextDay( false ), GhostBoxExit( false ), BreakoutEntry (false ), VolumeEntry( false ), VolumeAvgLen( 10 ), VolumeFactor( 1.5 ) ; variables: BarsSinceDH( 0 ), BarsSinceDL( 0 ), CriticalLow( 0 ), TempD_Low( 0 ), SearchForLow ( false ), D_Low( 0 ), D_High( 0 ), BottomLineNum( 0 ), TopLineNum( 0 ), LeftSideNum( 0 ), RightSideNum( 0 ), CriticalHigh( 0 ), TempD_High( 0 ), DHighLowDiff( 0 ), MyStop( 0 ), MyTrigger( 0 ), DownTrend( 0 ) ; if CurrentBar > Periods then begin BarsSinceDH = BarsSinceDH + 1 ; BarsSinceDL = BarsSinceDL + 1 ; if Low[3] <= CriticalLow[4] and Low[3] <= Low[2] and Low[3] <= Low[1] and Low[3] < Low then begin TempD_Low = Low[3] ; BarsSinceDL = 3 ; end ; if SearchForLow and BarsSinceDL < 6 and BarsSinceDL <= BarsSinceDH then begin D_Low = Low[BarsSinceDL] ; D_High = TempD_High ; SearchForLow = false ; BottomLineNum = TL_New( Date[BarsSinceDH], Time[BarsSinceDH], D_Low, Date[3], Time[3], D_Low ) ; TopLineNum = TL_New( Date[BarsSinceDH], Time[BarsSinceDH], D_High, Date[3], Time[3], D_High ) ; LeftSideNum = TL_New( Date[BarsSinceDH], Time[BarsSinceDH], D_High, Date[BarsSinceDH], Time[BarsSinceDH], D_Low ) ; RightSideNum = TL_New( Date[3], Time[3], D_High, Date[3], Time[3], D_Low ) ; end ; if High[3] >= CriticalHigh[4] and High[3] >= High[2] and High[3] >= High[1] and High[3] > High then begin BarsSinceDH = 3 ; TempD_High = High[3] ; SearchForLow = true ; end ; CriticalHigh = Highest( High, Periods ) ; CriticalLow = Lowest( Low, BarsSinceDH ) ; end ; DHighLowDiff = D_High - D_Low ; if GhostBoxExit and DHighLowDiff > 0 and Close > D_High + DHighLowDiff then begin MyStop = ( IntPortion( ( Close - D_Low ) / DHighLowdiff ) - 1 ) * DHighLowDiff + D_Low ; MyTrigger = MyStop + DHighLowDiff ; end else begin MyStop = D_Low ; MyTrigger = D_High ; end ; if Close crosses under D_Low then DownTrend = 0 else if BreakoutEntry and Close crosses over D_High then DownTrend = 1 else if BreakoutEntry and DownTrend = 1 and BarsSinceDL = 3 then DownTrend = 2 ; if ( BreakoutEntry and DownTrend = 2 ) or BreakoutEntry = false then begin if VolumeEntry then begin if Close crosses over MyTrigger and Volume > Average( Volume, VolumeAvgLen ) * VolumeFactor then Buy next bar market ; end else if Close < MyTrigger then Buy next bar MyTrigger stop ; if ExitNextDay then begin if Low[1] >= MyStop and Low < MyStop then Sell next bar at market ; end else Sell next bar at MyStop stop ; end ; 2. 기타 이전에 begin end는 중괄호라고 말씀해주셨던 것 같은데요. 트레이드스테이션 코드는 Sell next bar at market 이런 주문식 빼고 대부분 동일한가요?
프로필 이미지

잡다백수

2018-02-14 15:34:40

잡다백수 님에 의해 삭제된 답변입니다.
프로필 이미지

잡다백수

2018-02-14 15:34:40

코딩감사합니다. 실행해보니 '논리값(참/거짓)이나 논리표현식이 와야 합니다'라는 오류가 나왔습니다. 시뮬에 돌리려면 false 부분으로 된 것을 다 01로 바꾸어야 하나요? > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 문의드립니다. > 안녕하세요 예스스탁입니다. 1 inputs: Periods( 100 ), ExitNextDay( false ), GhostBoxExit( false ), BreakoutEntry (false ), VolumeEntry( false ), VolumeAvgLen( 10 ), VolumeFactor( 1.5 ) ; variables: BarsSinceDH( 0 ), BarsSinceDL( 0 ), CriticalLow( 0 ), TempD_Low( 0 ), SearchForLow ( false ), D_Low( 0 ), D_High( 0 ), BottomLineNum( 0 ), TopLineNum( 0 ), LeftSideNum( 0 ), RightSideNum( 0 ), CriticalHigh( 0 ), TempD_High( 0 ), DHighLowDiff( 0 ), MyStop( 0 ), MyTrigger( 0 ), DownTrend( 0 ) ; if CurrentBar > Periods then begin BarsSinceDH = BarsSinceDH + 1 ; BarsSinceDL = BarsSinceDL + 1 ; if Low[3] <= CriticalLow[4] and Low[3] <= Low[2] and Low[3] <= Low[1] and Low[3] < Low then begin TempD_Low = Low[3] ; BarsSinceDL = 3 ; end ; if SearchForLow and BarsSinceDL < 6 and BarsSinceDL <= BarsSinceDH then begin D_Low = Low[BarsSinceDL] ; D_High = TempD_High ; SearchForLow = false ; BottomLineNum = TL_New( Date[BarsSinceDH],Time[BarsSinceDH], D_Low, Date[3], Time[3],D_Low ) ; TopLineNum = TL_New( Date[BarsSinceDH],Time[BarsSinceDH], D_High, Date[3], Time[3],D_High ) ; LeftSideNum = TL_New( Date[BarsSinceDH],Time[BarsSinceDH], D_High, Date[BarsSinceDH],Time[BarsSinceDH], D_Low ) ; RightSideNum = TL_New( Date[3], Time[3], D_High,Date[3], Time[3], D_Low ) ; end ; if High[3] >= CriticalHigh[4] and High[3] >= High[2] and High[3] >= High[1] and High[3] > High then begin BarsSinceDH = 3 ; TempD_High = High[3] ; SearchForLow = true ; end ; CriticalHigh = Highest( High, Periods ) ; CriticalLow = Lowest( Low, BarsSinceDH ) ; end; DHighLowDiff = D_High - D_Low ; if GhostBoxExit and DHighLowDiff > 0 and Close > D_High + DHighLowDiff then begin MyStop = ( IntPortion( ( Close - D_Low ) / DHighLowdiff ) - 1 ) * DHighLowDiff + D_Low ; MyTrigger = MyStop + DHighLowDiff ; end else begin MyStop = D_Low ; MyTrigger = D_High ; end; if CrossDown(Close,D_Low) then DownTrend = 0 ; else if BreakoutEntry and crossup(Close,D_High) then DownTrend = 1 ; else if BreakoutEntry and DownTrend == 1 and BarsSinceDL == 3 then DownTrend = 2 ; if (BreakoutEntry and DownTrend == 2 ) or BreakoutEntry == false then begin if VolumeEntry then begin if crossup(Close, MyTrigger) and Volume > ma( Volume, VolumeAvgLen ) * VolumeFactor then Buy("b1",AtMarket); end else if Close < MyTrigger then Buy("b2",AtStop,MyTrigger); if ExitNextDay then begin if Low[1] >= MyStop and Low < MyStop then Sell("s1",AtMarket); end else Sell("s2",AtStop,MyStop); end; 2 기본적인 골격은 비슷하지만 세부적으로 여러 가지 차이점이 있습니다. 문법적으로 보면 예스랭귀지에서는 같다라는 표현이 == 인데, EL에서는 = 이고 예스랭귀지에서는 문장 끝에 항상 ;를 표시하는데 EL은 표시하지 않는 부분도 있습니다. 동일내용의 함수인데 함수명이 다를수 있고 동일 이름이라도 매개변수 지정이 다른 경우들이 있습니다. 즐거운 하루되세요 > 잡다백수 님이 쓴 글입니다. > 제목 : 문의드립니다. > 도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다. 1. 시스템 Strategy: Darvas by Guppy inputs: Periods( 100 ), ExitNextDay( false ), GhostBoxExit( false ), BreakoutEntry (false ), VolumeEntry( false ), VolumeAvgLen( 10 ), VolumeFactor( 1.5 ) ; variables: BarsSinceDH( 0 ), BarsSinceDL( 0 ), CriticalLow( 0 ), TempD_Low( 0 ), SearchForLow ( false ), D_Low( 0 ), D_High( 0 ), BottomLineNum( 0 ), TopLineNum( 0 ), LeftSideNum( 0 ), RightSideNum( 0 ), CriticalHigh( 0 ), TempD_High( 0 ), DHighLowDiff( 0 ), MyStop( 0 ), MyTrigger( 0 ), DownTrend( 0 ) ; if CurrentBar > Periods then begin BarsSinceDH = BarsSinceDH + 1 ; BarsSinceDL = BarsSinceDL + 1 ; if Low[3] <= CriticalLow[4] and Low[3] <= Low[2] and Low[3] <= Low[1] and Low[3] < Low then begin TempD_Low = Low[3] ; BarsSinceDL = 3 ; end ; if SearchForLow and BarsSinceDL < 6 and BarsSinceDL <= BarsSinceDH then begin D_Low = Low[BarsSinceDL] ; D_High = TempD_High ; SearchForLow = false ; BottomLineNum = TL_New( Date[BarsSinceDH], Time[BarsSinceDH], D_Low, Date[3], Time[3], D_Low ) ; TopLineNum = TL_New( Date[BarsSinceDH], Time[BarsSinceDH], D_High, Date[3], Time[3], D_High ) ; LeftSideNum = TL_New( Date[BarsSinceDH], Time[BarsSinceDH], D_High, Date[BarsSinceDH], Time[BarsSinceDH], D_Low ) ; RightSideNum = TL_New( Date[3], Time[3], D_High, Date[3], Time[3], D_Low ) ; end ; if High[3] >= CriticalHigh[4] and High[3] >= High[2] and High[3] >= High[1] and High[3] > High then begin BarsSinceDH = 3 ; TempD_High = High[3] ; SearchForLow = true ; end ; CriticalHigh = Highest( High, Periods ) ; CriticalLow = Lowest( Low, BarsSinceDH ) ; end ; DHighLowDiff = D_High - D_Low ; if GhostBoxExit and DHighLowDiff > 0 and Close > D_High + DHighLowDiff then begin MyStop = ( IntPortion( ( Close - D_Low ) / DHighLowdiff ) - 1 ) * DHighLowDiff + D_Low ; MyTrigger = MyStop + DHighLowDiff ; end else begin MyStop = D_Low ; MyTrigger = D_High ; end ; if Close crosses under D_Low then DownTrend = 0 else if BreakoutEntry and Close crosses over D_High then DownTrend = 1 else if BreakoutEntry and DownTrend = 1 and BarsSinceDL = 3 then DownTrend = 2 ; if ( BreakoutEntry and DownTrend = 2 ) or BreakoutEntry = false then begin if VolumeEntry then begin if Close crosses over MyTrigger and Volume > Average( Volume, VolumeAvgLen ) * VolumeFactor then Buy next bar market ; end else if Close < MyTrigger then Buy next bar MyTrigger stop ; if ExitNextDay then begin if Low[1] >= MyStop and Low < MyStop then Sell next bar at market ; end else Sell next bar at MyStop stop ; end ; 2. 기타 이전에 begin end는 중괄호라고 말씀해주셨던 것 같은데요. 트레이드스테이션 코드는 Sell next bar at market 이런 주문식 빼고 대부분 동일한가요?
프로필 이미지

예스스탁 예스스탁 답변

2018-02-14 15:40:04

안녕하세요 예스스탁입니다. 외부변수 중에 false로 지정된 변수를 0으로 변경했습니다. true는 1로 지정하고, false는 0으로 지정하시면 됩니다. inputs: Periods( 100 ), ExitNextDay( 0 ), GhostBoxExit( 0 ), BreakoutEntry (0 ), VolumeEntry( 0 ), VolumeAvgLen( 10 ), VolumeFactor( 1.5 ) ; variables: BarsSinceDH( 0 ), BarsSinceDL( 0 ), CriticalLow( 0 ), TempD_Low( 0 ), SearchForLow ( false ), D_Low( 0 ), D_High( 0 ), BottomLineNum( 0 ), TopLineNum( 0 ), LeftSideNum( 0 ), RightSideNum( 0 ), CriticalHigh( 0 ), TempD_High( 0 ), DHighLowDiff( 0 ), MyStop( 0 ), MyTrigger( 0 ), DownTrend( 0 ) ; if CurrentBar > Periods then begin BarsSinceDH = BarsSinceDH + 1 ; BarsSinceDL = BarsSinceDL + 1 ; if Low[3] <= CriticalLow[4] and Low[3] <= Low[2] and Low[3] <= Low[1] and Low[3] < Low then begin TempD_Low = Low[3] ; BarsSinceDL = 3 ; end ; if SearchForLow and BarsSinceDL < 6 and BarsSinceDL <= BarsSinceDH then begin D_Low = Low[BarsSinceDL] ; D_High = TempD_High ; SearchForLow = false ; BottomLineNum = TL_New( Date[BarsSinceDH],Time[BarsSinceDH], D_Low, Date[3], Time[3],D_Low ) ; TopLineNum = TL_New( Date[BarsSinceDH],Time[BarsSinceDH], D_High, Date[3], Time[3],D_High ) ; LeftSideNum = TL_New( Date[BarsSinceDH],Time[BarsSinceDH], D_High, Date[BarsSinceDH],Time[BarsSinceDH], D_Low ) ; RightSideNum = TL_New( Date[3], Time[3], D_High,Date[3], Time[3], D_Low ) ; end ; if High[3] >= CriticalHigh[4] and High[3] >= High[2] and High[3] >= High[1] and High[3] > High then begin BarsSinceDH = 3 ; TempD_High = High[3] ; SearchForLow = true ; end ; CriticalHigh = Highest( High, Periods ) ; CriticalLow = Lowest( Low, BarsSinceDH ) ; end; DHighLowDiff = D_High - D_Low ; if GhostBoxExit == 1 and DHighLowDiff > 0 and Close > D_High + DHighLowDiff then begin MyStop = ( IntPortion( ( Close - D_Low ) / DHighLowdiff ) - 1 ) * DHighLowDiff + D_Low ; MyTrigger = MyStop + DHighLowDiff ; end else begin MyStop = D_Low ; MyTrigger = D_High ; end; if CrossDown(Close,D_Low) then DownTrend = 0 ; else if BreakoutEntry == 1 and crossup(Close,D_High) then DownTrend = 1 ; else if BreakoutEntry == 1 and DownTrend == 1 and BarsSinceDL == 3 then DownTrend = 2 ; if (BreakoutEntry == 1 and DownTrend == 2 ) or BreakoutEntry == 0 then begin if VolumeEntry == 1 then begin if crossup(Close, MyTrigger) and Volume > ma( Volume, VolumeAvgLen ) * VolumeFactor then Buy("b1",AtMarket); end else if Close < MyTrigger then Buy("b2",AtStop,MyTrigger); if ExitNextDay == 1 then begin if Low[1] >= MyStop and Low < MyStop then Sell("s1",AtMarket); end else Sell("s2",AtStop,MyStop); end; 즐거운 하루되세요 > 잡다백수 님이 쓴 글입니다. > 제목 : Re : Re : 문의드립니다. > 코딩감사합니다. 실행해보니 '논리값(참/거짓)이나 논리표현식이 와야 합니다'라는 오류가 나왔습니다. 시뮬에 돌리려면 false 부분으로 된 것을 다 01로 바꾸어야 하나요? > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 문의드립니다. > 안녕하세요 예스스탁입니다. 1 inputs: Periods( 100 ), ExitNextDay( false ), GhostBoxExit( false ), BreakoutEntry (false ), VolumeEntry( false ), VolumeAvgLen( 10 ), VolumeFactor( 1.5 ) ; variables: BarsSinceDH( 0 ), BarsSinceDL( 0 ), CriticalLow( 0 ), TempD_Low( 0 ), SearchForLow ( false ), D_Low( 0 ), D_High( 0 ), BottomLineNum( 0 ), TopLineNum( 0 ), LeftSideNum( 0 ), RightSideNum( 0 ), CriticalHigh( 0 ), TempD_High( 0 ), DHighLowDiff( 0 ), MyStop( 0 ), MyTrigger( 0 ), DownTrend( 0 ) ; if CurrentBar > Periods then begin BarsSinceDH = BarsSinceDH + 1 ; BarsSinceDL = BarsSinceDL + 1 ; if Low[3] <= CriticalLow[4] and Low[3] <= Low[2] and Low[3] <= Low[1] and Low[3] < Low then begin TempD_Low = Low[3] ; BarsSinceDL = 3 ; end ; if SearchForLow and BarsSinceDL < 6 and BarsSinceDL <= BarsSinceDH then begin D_Low = Low[BarsSinceDL] ; D_High = TempD_High ; SearchForLow = false ; BottomLineNum = TL_New( Date[BarsSinceDH],Time[BarsSinceDH], D_Low, Date[3], Time[3],D_Low ) ; TopLineNum = TL_New( Date[BarsSinceDH],Time[BarsSinceDH], D_High, Date[3], Time[3],D_High ) ; LeftSideNum = TL_New( Date[BarsSinceDH],Time[BarsSinceDH], D_High, Date[BarsSinceDH],Time[BarsSinceDH], D_Low ) ; RightSideNum = TL_New( Date[3], Time[3], D_High,Date[3], Time[3], D_Low ) ; end ; if High[3] >= CriticalHigh[4] and High[3] >= High[2] and High[3] >= High[1] and High[3] > High then begin BarsSinceDH = 3 ; TempD_High = High[3] ; SearchForLow = true ; end ; CriticalHigh = Highest( High, Periods ) ; CriticalLow = Lowest( Low, BarsSinceDH ) ; end; DHighLowDiff = D_High - D_Low ; if GhostBoxExit and DHighLowDiff > 0 and Close > D_High + DHighLowDiff then begin MyStop = ( IntPortion( ( Close - D_Low ) / DHighLowdiff ) - 1 ) * DHighLowDiff + D_Low ; MyTrigger = MyStop + DHighLowDiff ; end else begin MyStop = D_Low ; MyTrigger = D_High ; end; if CrossDown(Close,D_Low) then DownTrend = 0 ; else if BreakoutEntry and crossup(Close,D_High) then DownTrend = 1 ; else if BreakoutEntry and DownTrend == 1 and BarsSinceDL == 3 then DownTrend = 2 ; if (BreakoutEntry and DownTrend == 2 ) or BreakoutEntry == false then begin if VolumeEntry then begin if crossup(Close, MyTrigger) and Volume > ma( Volume, VolumeAvgLen ) * VolumeFactor then Buy("b1",AtMarket); end else if Close < MyTrigger then Buy("b2",AtStop,MyTrigger); if ExitNextDay then begin if Low[1] >= MyStop and Low < MyStop then Sell("s1",AtMarket); end else Sell("s2",AtStop,MyStop); end; 2 기본적인 골격은 비슷하지만 세부적으로 여러 가지 차이점이 있습니다. 문법적으로 보면 예스랭귀지에서는 같다라는 표현이 == 인데, EL에서는 = 이고 예스랭귀지에서는 문장 끝에 항상 ;를 표시하는데 EL은 표시하지 않는 부분도 있습니다. 동일내용의 함수인데 함수명이 다를수 있고 동일 이름이라도 매개변수 지정이 다른 경우들이 있습니다. 즐거운 하루되세요 > 잡다백수 님이 쓴 글입니다. > 제목 : 문의드립니다. > 도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다. 1. 시스템 Strategy: Darvas by Guppy inputs: Periods( 100 ), ExitNextDay( false ), GhostBoxExit( false ), BreakoutEntry (false ), VolumeEntry( false ), VolumeAvgLen( 10 ), VolumeFactor( 1.5 ) ; variables: BarsSinceDH( 0 ), BarsSinceDL( 0 ), CriticalLow( 0 ), TempD_Low( 0 ), SearchForLow ( false ), D_Low( 0 ), D_High( 0 ), BottomLineNum( 0 ), TopLineNum( 0 ), LeftSideNum( 0 ), RightSideNum( 0 ), CriticalHigh( 0 ), TempD_High( 0 ), DHighLowDiff( 0 ), MyStop( 0 ), MyTrigger( 0 ), DownTrend( 0 ) ; if CurrentBar > Periods then begin BarsSinceDH = BarsSinceDH + 1 ; BarsSinceDL = BarsSinceDL + 1 ; if Low[3] <= CriticalLow[4] and Low[3] <= Low[2] and Low[3] <= Low[1] and Low[3] < Low then begin TempD_Low = Low[3] ; BarsSinceDL = 3 ; end ; if SearchForLow and BarsSinceDL < 6 and BarsSinceDL <= BarsSinceDH then begin D_Low = Low[BarsSinceDL] ; D_High = TempD_High ; SearchForLow = false ; BottomLineNum = TL_New( Date[BarsSinceDH], Time[BarsSinceDH], D_Low, Date[3], Time[3], D_Low ) ; TopLineNum = TL_New( Date[BarsSinceDH], Time[BarsSinceDH], D_High, Date[3], Time[3], D_High ) ; LeftSideNum = TL_New( Date[BarsSinceDH], Time[BarsSinceDH], D_High, Date[BarsSinceDH], Time[BarsSinceDH], D_Low ) ; RightSideNum = TL_New( Date[3], Time[3], D_High, Date[3], Time[3], D_Low ) ; end ; if High[3] >= CriticalHigh[4] and High[3] >= High[2] and High[3] >= High[1] and High[3] > High then begin BarsSinceDH = 3 ; TempD_High = High[3] ; SearchForLow = true ; end ; CriticalHigh = Highest( High, Periods ) ; CriticalLow = Lowest( Low, BarsSinceDH ) ; end ; DHighLowDiff = D_High - D_Low ; if GhostBoxExit and DHighLowDiff > 0 and Close > D_High + DHighLowDiff then begin MyStop = ( IntPortion( ( Close - D_Low ) / DHighLowdiff ) - 1 ) * DHighLowDiff + D_Low ; MyTrigger = MyStop + DHighLowDiff ; end else begin MyStop = D_Low ; MyTrigger = D_High ; end ; if Close crosses under D_Low then DownTrend = 0 else if BreakoutEntry and Close crosses over D_High then DownTrend = 1 else if BreakoutEntry and DownTrend = 1 and BarsSinceDL = 3 then DownTrend = 2 ; if ( BreakoutEntry and DownTrend = 2 ) or BreakoutEntry = false then begin if VolumeEntry then begin if Close crosses over MyTrigger and Volume > Average( Volume, VolumeAvgLen ) * VolumeFactor then Buy next bar market ; end else if Close < MyTrigger then Buy next bar MyTrigger stop ; if ExitNextDay then begin if Low[1] >= MyStop and Low < MyStop then Sell next bar at market ; end else Sell next bar at MyStop stop ; end ; 2. 기타 이전에 begin end는 중괄호라고 말씀해주셨던 것 같은데요. 트레이드스테이션 코드는 Sell next bar at market 이런 주문식 빼고 대부분 동일한가요?