SL, TP 없이 작업해도 OK. 그러나 우리는 여전히 이익의 경우 주문을 닫는 조건이 필요합니다. 리뉴얼된 기능 "iSignalClose", https://www.mql5.com/en/forum/124521/page2를 살펴보십시오. 지금은 물론 가상 SL의 조건입니다. 그러나 여전히 가상 TP의 조건이 필요합니다. 당신의 응답을 기다리는. :)
안녕하세요 아이스 와우 대단한 작품입니다. 고맙습니다. 죄송합니다. 일요일이었고 호수에서 가족과 시간을 보내고 저녁 식사를 했습니다. 나는 당신이 수행한 모든 작업을 보기 위해 몇 분 전에 프로그램을 열었습니다. 어떻게 해야 충분히 감사할 수 있습니까? 내가 흡수하는 데 약간의 시간이 걸릴 수 있습니다. TP가 논의되지 않았다는 생각은 내가 이것을 하나로 묶고 있다는 것입니다. 한 번에 명령문 또는 기능. 프로그램을 빌드하는 방법을 천천히 이해하십시오. 이에 대한 귀하의 생각은 프로그램을 단축하고 전문적입니다. 공유해 주셔서 감사합니다. TP와 SL은 조금 더 복잡합니다. 내가 말했듯이, 나는 이것을 천천히 배우고 있습니다. 다음에 어떤 기능을 수행해야 하는지 확실하지 않습니다. 기회가 된다면 더 큰 그림을 알려 드리겠습니다.
1. 이 프로그램을 통해 더 많은 직위를 추가하려고 했습니다. 초기 위치와 같은. 이미 프로그램에 있는 것과 2, 3, 4, 5에 위치합니다. 참고: 5개 이상의 위치로 백테스트하지 않았습니다.
2. 새로운 위치에서 SL은 각각에 맞게 조정해야 합니다. SL 히트시 모든 포지션 청산됩니다.
3. 각 추가 위치는 이전 위치에서 1/2 ATR이 됩니다. 구매는 1/2 ATR이 더 큽니다. 여기서 Sell은 1/2 ATR 더 낮을 것입니다.
4. SL은 각 추가 위치에 따라 1/2 ATR로 조정됩니다. 참고: 적절한 추세에 있고 가격이 1/2 ATR을 넘어갈 때가 있습니다. 그리고 더 이상 직위를 원하지 않습니다. 이 추세에는 가격이 마지막 10개 막대 중 가장 낮은 값이 마지막 SL보다 높아지는 지점에 도달하는 시간이 있습니다. 이 경우 SL은 마지막 10개 막대 중 가장 낮은 값으로 조정됩니다. 저점이 차트에서 벗어난 후 그에 따라 조정됩니다. 보시다시피 SL은 후행 정지가 아닙니다. 그러나 ATR*2에 의해 조정된 다음 지난 10일의 최저 최저가로 조정됩니다. (언급된 상황은 매수 조건이었습니다. 매도 조건은 정반대입니다.)
이것은 내가 손으로 백테스트한 시스템입니다. 나는 코드나 TP로 백테스팅을 하는 호사를 누리지 못했다. 아마도 가까운 장래에 가격 패턴. 그러나 지금은 이익을 내고 작은 손실을 많이 입었습니다.
세련되게 하려고 해서는 안 된다고 들었습니다. 작은 프로그램에서 배워야 할 것 그리고 그들로부터 빌드하십시오. 그래서 그냥 그렇게 하려고 해요. 따라서 다음 단계는 학습이 될 것이라고 생각합니다. 추가 위치에서 피벗하는 방법. 그런 다음 SL을 조정하는 방법을 배우십시오.
자금 관리는 마지막까지 보류될 수 있습니다. 하지만 너무 중요합니다. 내가 잘못된 방향으로 가고 있다고 생각한다면 어떤 입력.
추가 조치로 인해 수행된 작업이 방해받지 않기를 바랍니다. 어떤 단계를 먼저 수행해야 하는지, 어떤 단계를 따라야 하는지 몰랐을 뿐입니다.
모든 것에 감사합니다. 나는 당신의 개선에 감탄하고 있습니다. 나는 돌아올 것이다. 나는 또한 더 많은 질문을 가지고 있을 것이다. 당신이 준 것으로 배울 것이 많습니다. 건배
SL, TP 없이 작업해도 OK.
그러나 우리는 여전히 이익의 경우 주문을 닫는 조건이 필요합니다.
리뉴얼된 기능 "iSignalClose", https://www.mql5.com/en/forum/124521/page2 를 살펴보십시오 .
지금은 물론 가상 SL의 조건입니다.
그러나 여전히 가상 TP의 조건이 필요합니다.
당신의 응답을 기다리는.
:)
안녕하세요 아이스와우 대단한 작품입니다. 고맙습니다.
죄송합니다. 일요일이었고 호수에서 가족과 시간을 보내고 저녁 식사를 했습니다.
나는 당신이 수행한 모든 작업을 보기 위해 몇 분 전에 프로그램을 열었습니다.
어떻게 해야 충분히 감사할 수 있습니까? 내가 흡수하는 데 약간의 시간이 걸릴 수 있습니다.
TP가 논의되지 않았다는 생각은 내가 이것을 하나로 묶고 있다는 것입니다.
한 번에 명령문 또는 기능. 프로그램을 빌드하는 방법을 천천히 이해하십시오.
이에 대한 귀하의 생각은 프로그램을 단축하고 전문적입니다. 공유해 주셔서 감사합니다.
TP와 SL은 조금 더 복잡합니다. 내가 말했듯이, 나는 이것을 천천히 배우고 있습니다.
다음에 어떤 기능을 수행해야 하는지 확실하지 않습니다. 기회가 된다면 더 큰 그림을 알려 드리겠습니다.
1. 이 프로그램을 통해 더 많은 직위를 추가하려고 했습니다. 초기 위치와 같은.
이미 프로그램에 있는 것과 2, 3, 4, 5에 위치합니다.
참고: 5개 이상의 위치로 백테스트하지 않았습니다.
2. 새로운 위치에서 SL은 각각에 맞게 조정해야 합니다. SL 히트시 모든 포지션
청산됩니다.
3. 각 추가 위치는 이전 위치에서 1/2 ATR이 됩니다. 구매는 1/2 ATR이 더 큽니다.
여기서 Sell은 1/2 ATR 더 낮을 것입니다.
4. SL은 각 추가 위치에 따라 1/2 ATR로 조정됩니다.
참고: 적절한 추세에 있고 가격이 1/2 ATR을 넘어갈 때가 있습니다.
그리고 더 이상 직위를 원하지 않습니다. 이 추세에는 가격이 마지막 10개 막대 중 가장 낮은 값이 마지막 SL보다 높아지는 지점에 도달하는 시간이 있습니다. 이 경우 SL은 마지막 10개 막대 중 가장 낮은 값으로 조정됩니다. 저점이 차트에서 벗어난 후 그에 따라 조정됩니다. 보시다시피 SL은 후행 정지가 아닙니다. 그러나 ATR*2에 의해 조정된 다음 지난 10일의 최저 최저가로 조정됩니다. (언급된 상황은 매수 조건이었습니다. 매도 조건은 정반대입니다.)
이것은 내가 손으로 백테스트한 시스템입니다.
나는 코드나 TP로 백테스팅을 하는 호사를 누리지 못했다. 아마도 가까운 장래에
가격 패턴. 그러나 지금은 이익을 내고 작은 손실을 많이 입었습니다.
세련되게 하려고 해서는 안 된다고 들었습니다. 작은 프로그램에서 배워야 할 것
그리고 그들로부터 빌드하십시오. 그래서 그냥 그렇게 하려고 해요. 따라서 다음 단계는 학습이 될 것이라고 생각합니다.
추가 위치에서 피벗하는 방법. 그런 다음 SL을 조정하는 방법을 배우십시오.
자금 관리는 마지막까지 보류될 수 있습니다. 하지만 너무 중요합니다. 내가 잘못된 방향으로 가고 있다고 생각한다면
어떤 입력.
추가 조치로 인해 수행된 작업이 방해받지 않기를 바랍니다.
어떤 단계를 먼저 수행해야 하는지, 어떤 단계를 따라야 하는지 몰랐을 뿐입니다.
모든 것에 감사합니다.
나는 당신의 개선에 감탄하고 있습니다. 나는 돌아올 것이다. 나는 또한 더 많은 질문을 가지고 있을 것이다. 당신이 준 것으로 배울 것이 많습니다.
건배
안녕하세요 허클베리입니다.
감사합니다.
"
안녕하세요 아이스
와우 대단한 작품입니다. 고맙습니다.
"
정말 그리고 진정으로.
이제 계산을 개선할 것입니다.
정확히는 새 막대에서만 ATR을 계산하고 싶습니다.
더 빠르게 테스트하고 최적화할 수 있습니다.
그리고 주요 의도는 프로그램을 쉽게 변경할 수 있다는 것이었습니다.
프로그램을 확장하고 새로운 기능을 추가하더라도.
복잡성을 줄이기 위해 특별히 만들어진 구조입니다.
나는 큰 프로그램을 위해 가까운 장래에 동일한 구조를 사용할 것입니다.
트레이딩 전략 에 관해서는, 나는 그것을 덧없이 공부했을 뿐입니다.
많은 전략이 작동할 수 있고 작동해야 한다고 확신합니다.
구조를 가장 잘 이해할 수 있도록 공부하는 데 도움이 되었으면 합니다.
지금은 안부 인사
추신 앞으로는 가상 테이크 앤 스톱으로만 작업할 예정입니다.
////////////////////////////////////////////////////////////////////< 1> // < Program : Property > //< > // #define 1 " " //< > // #define 2 " " //< > // </Program : Property > //< > // //< > // < Program : Content > //< > // //< > // < Structure 16 elements in 4 domains > //< > // < 1. Data 7 elements in 2 domains /> //< > // < 2. Code 9 elements in 2 domains /> //< > // </Structure 16 elements in 4 domains > //< > // //< > // < 1. Data 7 = 4 i 3 d - s > //< > // < 1.1. Input 7 = 4 i 3 d - s /> //< > // < 1.2. Buffer - = - i - d - s /> //< > // </1. Data 7 = 4 i 3 d - s > //< > // //< > // < 2. Code 9 / - i 82 l 4 o > //< > // < 2.1. Interface 6 / - i 71 l 4 o /> //< > // < 2.2. Special 3 / - i 11 l - o /> //< > // </2. Code 9 / - i 82 l 4 o > //< > // //< > // </Program : Content > //< >
////////////////////////////////////////////////////////////////////< 2> // < 1.1. Data : Input > //< > // //< > // < 1.1. Input 7 = 4 i 3 d - s > //< > // < 1. Strategy 4 = 2 i 2 d - s /> //< > // < 2. Trading 3 = 2 i 1 d - s /> //< > // </1.1. Input 7 = 4 i 3 d - s > //< > // //< > // < 1. Strategy 4 >=========================================//< > int iBaseLag = 20 ; //< > int iBaseBar = 1 ; //< > double dFactorTP = 2.0 ; //< > double dFactorSL = 2.0 ; //< > // </ 1. Strategy 4 >=========================================//< > // //< > // < 2. Trading 3 >==========================================//< > int iSlippage = 1 ; //< > int iMagic = 1 ; //< > double dLots = 0.1 ; //< > // </ 2. Trading 3 >==========================================//< > // //< > // //< > // //< > // </1.1. Data : Input > //< >
////////////////////////////////////////////////////////////////////< 3> // < 1.2. Data : Buffer > //< > // //< > // < 1.2. Buffer - = - i - d - s > //< > // </1.2. Buffer - = - i - d - s > //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // </1.2. Data : Buffer > //< >
////////////////////////////////////////////////////////////////////< 4> // < 2.1. Code : Interface > //< > // //< > // < 2.1. Interface 6 / - i 71 l 4 o > //< > // < 1. iNewBar - i 4 l 1 o /> //< > // < 2. iSignalOpen - i 15 l 1 o /> //< > // < 3. iSignalClose - i 15 l 1 o /> //< > // < 4. iGetTicket - i 7 l 1 o /> //< > // < 5. iTryOpen - i 15 l - o /> //< > // < 6. iTryClose - i 15 l - o /> //< > // </2.1. Interface 6 / - i 71 l 4 o > //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // </2.1. Code : Interface > //< >
////////////////////////////////////////////////////////////////////< 5> // < 2.1.1. Code : Interface : iNewBar > //< > int iNewBar () // - i 4 l 1 o //< > { //< > static int iTime_0 = 0 ; //< > // //< > if ( iTime_0 < iTime ( 0 , 0 , 0 ) ) //< > { iTime_0 = iTime ( 0 , 0 , 0 ) ; return ( TRUE ) ; } //< > else { return ( EMPTY ) ; } //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > } //< > // </2.1.1. Code : Interface : iNewBar > //< >
////////////////////////////////////////////////////////////////////< 6> // < 2.1.2. Code : Interface : iSignalOpen > //< > int iSignalOpen () // - i 15 l 1 o //< > { //< > static int iFirstRun = 1 ; //< > if ( ( iNewBar () == TRUE ) || ( iFirstRun == 1 ) ) //< > { iFirstRun = 0 ; //< > int iIndexH = iHighest ( 0 , 0 , MODE_HIGH , //< > iBaseLag , iBaseBar ) ; //< > int iIndexL = iLowest ( 0 , 0 , MODE_LOW , //< > iBaseLag , iBaseBar ) ; //< > static double dHigh ; dHigh = High [ iIndexH ] ; //< > static double dLow ; dLow = Low [ iIndexL ] ; //< > } // if //< > // //< > double dAsk = MarketInfo ( Symbol () , MODE_ASK ) ; //< > if ( dAsk > dHigh ) return ( OP_BUY ) ; //< > // //< > double dBid = MarketInfo ( Symbol () , MODE_BID ) ; //< > if ( dBid < dLow ) return ( OP_SELL ) ; //< > // //< > return ( EMPTY ) ; //< > } //< > // </2.1.2. Code : Interface : iSignalOpen > //< >
////////////////////////////////////////////////////////////////////< 7> // < 2.1.3. Code : Interface : iSignalClose > //< > int iSignalClose () // - i 15 l 1 o //< > { //< > static int iFirstRun = 1 ; //< > if ( ( iNewBar () == TRUE ) || ( iFirstRun == 1 ) ) //< > { iFirstRun = 0 ; //< > static double dATR , dProfit , dLoss ; //< > dATR = iATR ( 0 , 0 , iBaseLag , iBaseBar ) ; //< > } // if //< > // //< > double dDelta = OrderOpenPrice () - OrderClosePrice () ; //< > // //< > if ( OrderType () == OP_BUY ) //< > { dProfit = -dDelta ; dLoss = dDelta ; } //< > else if ( OrderType () == OP_SELL ) //< > { dProfit = dDelta ; dLoss = -dDelta ; } //< > else return ( EMPTY ) ; //< > // //< > if ( dProfit > dATR * dFactorTP ) return ( TRUE ) ; //< > if ( dLoss > dATR * dFactorSL ) return ( TRUE ) ; //< > return ( EMPTY ) ; //< > } //< > // </2.1.3. Code : Interface : iSignalClose > //< >
////////////////////////////////////////////////////////////////////< 8> // < 2.1.4. Code : Interface : iGetTicket > //< > int iGetTicket () // - i 7 l 1 o //< > { //< > for ( int i = OrdersTotal () - 1 ; i >= 0 ; i -- ) //< > { //< > if ( OrderSelect ( i , SELECT_BY_POS ) == TRUE ) //< > if ( OrderMagicNumber () == iMagic ) //< > return ( OrderTicket () ) ; //< > } // for //< > return ( EMPTY ) ; //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > } //< > // </2.1.4. Code : Interface : iGetTicket > //< >
////////////////////////////////////////////////////////////////////< 9> // < 2.1.5. Code : Interface : iTryOpen > //< > int iTryOpen () // - i 15 l - o //< > { //< > int iCommand = iSignalOpen () ; //< > if ( iCommand == EMPTY ) return ; //< > if ( iCommand == OP_BUY ) //< > { string sType = "Buy" ; int iColor = Blue ; } //< > else { sType = "Sell" ; iColor = Red ; } //< > // //< > if ( iCommand == OP_BUY ) int iMode = MODE_ASK ; //< > else iMode = MODE_BID ; //< > double dPrice = MarketInfo ( Symbol () , iMode ) ; //< > // //< > OrderSend ( Symbol () , iCommand , dLots , //< > NormalizeDouble ( dPrice , Digits ) , //< > iSlippage , 0 , 0 , "" , iMagic , 0 , iColor ) ; //< > // //< > int iTrap = GetLastError () ; //< > if ( iTrap == 0 ) //< > Alert ( sType , " Was a Big Success" ) ; //< > else Alert ( sType , " open exception " , iTrap ) ; //< > } //< > // </2.1.5. Code : Interface : iTryOpen > //< >
////////////////////////////////////////////////////////////////////< 10> // < 2.1.6. Code : Interface : iTryClose > //< > int iTryClose () // - i 15 l - o //< > { //< > int iCommand = iSignalClose () ; //< > if ( iCommand == EMPTY ) return ; //< > if ( OrderType () == OP_BUY ) //< > { string sType = "Buy" ; int iColor = Red ; } //< > else { sType = "Sell" ; iColor = Blue ; } //< > // //< > if ( OrderProfit () > 0 ) string sAct = "Take" ; //< > else sAct = "Stop" ; //< > double dPrice = OrderClosePrice () ; //< > // //< > OrderClose ( OrderTicket () , OrderLots () , //< > NormalizeDouble ( dPrice , Digits ) , //< > iSlippage , iColor ) ; //< > // //< > int iTrap = GetLastError () ; //< > if ( iTrap == 0 ) //< > Alert ( sType , " closed with Hard " , sAct ) ; //< > else Alert ( sType , " close exception " , iTrap ) ; //< > } //< > // </2.1.6. Code : Interface : iTryClose > //< >
////////////////////////////////////////////////////////////////////< 11> // < 2.2. Code : Special > //< > // //< > // < 2.2. Special 3 / - i 11 l - o > //< > // < 1. init - i 1 l - o /> //< > // < 2. deinit - i 1 l - o /> //< > // < 3. start - i 9 l - o /> //< > // </2.2. Special 3 / - i 11 l - o > //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // </2.2. Code : Special > //< >
////////////////////////////////////////////////////////////////////< 12> // < 2.2.1. Code : Special : Init > //< > int init () // - i 1 l - o //< > { //< > Alert ( "" , "Start " , UninitializeReason () ) ; //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > } //< > // </2.2.1. Code : Special : Init > //< >
////////////////////////////////////////////////////////////////////< 13> // < 2.2.2. Code : Special : Deinit > //< > int deinit () // - i 1 l - o //< > { //< > Alert ( "" , "Stop " , UninitializeReason () ) ; //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > } //< > // </2.2.2. Code : Special : Deinit > //< >
////////////////////////////////////////////////////////////////////< 14> // < 2.2.3. Code : Special : Start > //< > int start () // - i 9 l - o //< > { //< > // < 2.2.3.1. History data inspection 4 >`````````````````````````//< > static int iTrigger = 0 ; if ( iTrigger == 0 ) { //< > if ( ( iTime ( 0 , 0 , 0 ) == 0 ) //< > || ( iBars ( 0 , 0 ) < iBaseLag + iBaseBar ) ) //< > return ; else iTrigger = 1 ; } //< > // </2.2.3.1. History data inspection 4 >`````````````````````````//< > // //< > // < 2.2.3.2. Main routine 3 >````````````````````````````````````//< > int iTicket = iGetTicket () ; //< > // //< > if ( iTicket < 0 ) iTryOpen () ; //< > else iTryClose () ; //< > // </2.2.3.2. Main routine 3 >````````````````````````````````````//< > // //< > // < 2.2.3.3. Exception handler 2 >```````````````````````````````//< > int iTrap = GetLastError () ; //< > if ( iTrap > 0 ) Alert ( "Exception " , iTrap ) ; //< > // </2.2.3.3. Exception handler 2 >```````````````````````````````//< > } //< > // </2.2.3. Code : Special : Start > //< > ////////////////////////////////////////////////////////////////////< 0>
Adjust MetaEditor window to see 25 lines x 80 columns. Use <Page Up> and <Page Down> to scroll the content. Last edit: 2010.03.16 18:44 State: Ready