Trailingstop EA가 작동하지 않습니다 - 페이지 4

 
WHRoeder :
그는 자르고 붙여넣기만 하면 되고 코딩을 배울 필요가 없다고 생각합니다. 그는 다음과 같이 묻지 않고는 이 간단한 오류를 고칠 수도 없습니다.
'MySelect' - 전역 범위에서만 함수를 선언할 수 있습니다. Trailing_v26.mq4 31 13


귀하와 다른 모든 사람들이 제공하는 도움에 정말 감사드립니다. 나는 지난 며칠 동안 그것을 컴파일하기 위해 모든 것을 시도했고 내가 묻지 않은 것에 대해 사과드립니다. 대부분의 사람들은 내가 내 자신의 코드를 사용하는 것을 연기하고 다른 사람의 코드를 사용하는 것을 제안했지만 내가 무엇을 잘못하고 있는지 이해하지 못하면 배우지 않을 것입니다. 제 코드는 괜찮아 보입니다. 포지션별로 주문을 계산하고 내 기준을 충족하는 주문만 선택한 다음 특정 거래를 수정하도록 요청합니다. 지금까지 4페이지가 지난 후에도 아무도 내 코드의 어느 줄이 손상되었는지 지적하지 않았습니다. 내가 무엇을 잘못하고 있는지 먼저 보고 이해하지 않으면 다른 사람의 코드를 사용하여 배우는 데 도움이 되지 않습니다. 지금 제 목표는 작동하는 Trailingstop EA를 사용하는 것이 아니라 계속 진행할 수 있도록 코딩하는 방법을 배우는 것이기 때문입니다. 사실 내 코드는 Jimdandy가 Trailingstops에 대한 Youtube Tutorial에 게시한 코드와 거의 동일했습니다. 그의 코드와 거의 동일하기 때문에 코드를 거의 그대로 복사했지만(수동으로 거래하려는 경우 제외) 그의 코드도 가끔 작동합니다.

일부 내용을 인쇄했습니다. 이 거래는 내가 Trailingstop이 시작되도록 지정한 지점(150포인트)을 넘어서 거의 300포인트입니다.

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderModify = false

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: 물음 = 1.45926

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: Selectbypos = 0

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: Selectbyticket = 1

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: 주문 티켓 = 50381828

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: 티켓 = 0

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderSelect = true

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: 총 주문 = 16

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: 주문 기호 = EURUSD

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: 주문 티켓 = 50381828

2016.04.22 00:17:58.934 Trailing_v33 EURAUD,M15: OrderModify = false

이 EA는 EURAUD에만 배치됩니다. 보시다시피 9개의 다른 차트에 16개의 주문이 열려 있습니다. 이 쌍에 대해 선택된 티켓 번호가 완전히 잘못되었으며 OrderSymbol이 완전히 잘못되었습니다. 둘 다 열린 EURUSD 주문에 대한 것입니다. 위의 내용을 기반으로 이 경우 내 for 루프 는 위치 0을 선택 했지만 선택해야 하는 EURAUD는 위치 14(15-1)에 있었습니다. 왜요? 나는 이것을 무시하라고 말했다.

위에서 언급한 비디오에서 Jim은 실제로 이 문제를 해결하고 다음 코드를 사용하여 내 문제를 해결한다고 말했습니다. 그러나 이것은 주문을 제대로 보내기 위한 카운터이지 주문을 필터링하는 기능이 아닙니다. 필터로 사용하려고 했지만 성공하지 못했습니다.

 int OpenOrdersThisPair( string pair){
   int total= 0 ;
       for ( int s= OrdersTotal ()- 1 ; s>= 0 ; s--){
         OrderSelect (s,SELECT_BY_POS,MODE_TRADES);
           if (OrderSymbol()==pair) total++;
       }
   return (total);  
}

내 코드는 이제 다음과 같습니다. 누군가 내 코드를 비판하여 내가 이것에서 배우고 여러 차트에서 작동하지 않는 이유를 말해 줄 수 있습니까? 나는 그것이 실제로 때때로 완벽하게 작동하기 때문에 그것이 그렇게 나쁠 수 없다는 것을 알고 있습니다. 고맙습니다

 #property strict ;
extern string Label_TrailingStart= "Pip threshold to activate TrailingStop" ;
extern int TrailingStart= 10 ;
extern string Label_TrailingStop= "Pips trailing behind" ;
extern int TrailingStop= 5 ;
double stoplevel=(MarketInfo( Symbol (),MODE_STOPLEVEL))/ 10 ,Pip= Point * 10 ;
int TS=TrailingStart-TrailingStop;
bool UseTrailingStop= true ,UseAutotrading= true ;
//+------------------------------------------------------------------+
//|  Expert initialization function                                  |
//+------------------------------------------------------------------+
int init(){
   if (TS<stoplevel){
    MessageBox("Please note: Your inputs cannot be less than the minimum levels required"+
            "\nby your broker. Please reload the EA and either increase the value of the"+
            "\nTrailingStart and/or decrease the value of the TrailingStop so that "+
            "\nTrailingStart-TrailingStop >= "+StringConcatenate(stoplevel)+" pips");
     } 
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|    Expert deinitialization function                              |
//+------------------------------------------------------------------+
int deinit(){
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|   Expert start function                                          |
//+------------------------------------------------------------------+
int start(){
   if (UseTrailingStop) Trailing(); 
   if (UseAutotrading) Autotrading();  
   return ( 0 );
}
//+------------------------------------------------------------------+
void Trailing(){
for ( int b= OrdersTotal ()- 1 ; b>= 0 ; b--){
       if ( OrderSelect (b,SELECT_BY_POS,MODE_TRADES))
         if (OrderSymbol()== Symbol ())
             if (OrderType()==OP_BUY)
                   if ((Bid-OrderOpenPrice())>(TrailingStart*Pip))
                     if (OrderStopLoss()<Bid-(TrailingStop*Pip))
                        OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(TrailingStop*Pip),OrderTakeProfit(),Blue);
   }     
   for ( int s= OrdersTotal ()- 1 ; s>= 0 ; s--){
     if ( OrderSelect (s,SELECT_BY_POS,MODE_TRADES))
         if (OrderSymbol()== Symbol ())
             if (OrderType()==OP_SELL)
                   if ((OrderOpenPrice()-Ask)>(TrailingStart*Pip))
                     if (OrderStopLoss()>Ask+(TrailingStop*Pip) || OrderStopLoss()== 0 )
                        OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(TrailingStop*Pip),OrderTakeProfit(),Red);
   }
}
void Autotrading(){
   if (!IsTradeAllowed()){
       MessageBox ( "This Expert Advisor requires Auto Trading. Please reload the EA or right click on" +
                 "\nthe chart to bring up the inputs window. Under the common tab check the box to" +
                 "\nallow live trading" );
       Sleep ( 50000 );
     }
   if (!IsExpertEnabled()){
       MessageBox ( "This Expert Advisor requires Auto Trading. Please click the button at the top" );
       Sleep ( 50000 );
     } 
}


 
Trader3000 :

지금까지 4페이지가 지난 후에도 아무도 내 코드의 어느 줄이 손상되었는지 지적하지 않았습니다.

사실이 아니다! 우리는 귀하의 오류를 설명하고 다양한 방식과 대안으로 솔루션을 제공했습니다. 그러나 당신은 그것들을 무시하고 당신의 방식대로 계속합니다. 뿐만 아니라 더 많은 실수를 추가하여 이제 더 악화되었습니다.

화가가 그림을 배울 때, 그는 먼저 그림을 마스터한 다른 사람들의 기술에 대처함으로써 그림을 그리게 됩니다. 이러한 기법에 익숙해지면 비로소 그는 자신만의 회화 방식을 만들기 시작합니다.

다음은 "내 비판"의 짧은 목록입니다.

  1. 중괄호("중괄호")를 사용하세요. 절약하고 절약하려고 하지 마십시오. 코드가 완전히 작동 하고 디버그될 때까지 블록에 한 줄만 포함되어 있어도 추가하십시오. 그런 다음 별도의 줄에도 놓습니다. 여백이 많으면 걱정하지 마십시오. 언제든지 돌아가서 정리할 수 있지만 처음에는 모든 것이 올바른 코드 블록 내에 있고 중괄호와 괄호가 균형을 이루고 있는지 확인하고 싶습니다. 여러 "if" 문을 하나의 케이던스로 묶는 것은 디버그하기가 매우 어렵기 때문에 특히 이와 같이 까다로운 컴파일러를 사용하는 경우 재앙을 초래할 수 있습니다.
  2. 원래 코드에는 하나의 루프만 있었는데 코드를 더 느리게 만들고 버그가 있을 때 수정해야 하는 부분을 반복하는 것을 제외하고는 명백한 이유 없이 두 개로 만들었습니다.
  3. 변수를 사용하여 표현식의 결과를 저장하십시오! 동일한 표현식을 여러 번 반복하면 코드가 느려질 뿐만 아니라 오류가 발생하기 쉽고 여러 위치에서 변경해야 하기 때문에 읽고 수정하기가 더 어려워집니다.

나열할 수 있는 항목이 더 있지만 적어도 한 번만 수정하십시오!

코딩은 다른 언어와 같습니다. 예, 단어를 한데 묶을 수는 있지만 그렇다고 해서 시인이 되는 것은 아닙니다. 코딩을 할 때도 읽기 쉽고 기능적으로 만들려면 리듬과 구조가 있어야 합니다.

 
FMIC :

다음은 "내 비판"의 짧은 목록입니다.

알겠습니다. 대단히 감사합니다. 실제로 이전에 여기에 게시한 코드에 따라 처음에는 모든 'if' 문에 대괄호가 있었지만 해당 코드가 작동하지 않았기 때문에 이전 게시물에 붙여넣은 코드 복사를 포함하여 다양한 다른 작업을 시도했습니다. 내가 언급했듯이 이것은 실제로 내 코드도 아니지만 모든 쌍에서 작동하지도 않습니다. 그러나 브래킷을 다시 교체하고 다른 조언을 따를 것입니다. 그 동안 나는 OrderSelect가 터미널에서 첫 번째 주문의 Symbol을 인쇄하고 EA가 켜져 있는 것이 아니라 실제로 잘못되지 않았다는 것을 배웠습니다.

편집: 제안 #3에 감사드립니다!!!!!!! 나는 이것이 문제라고 생각합니다. 왜냐하면 Order는 먼저 Symbol에 의해 선택되어야 하고 그 다음 값이 저장되어야 하기 때문입니다. 그래서 변수를 아래와 같이 해당 기능 아래로 옮겼고 지금은 작동하는 것 같습니다(그러나 확실히 알기 전에 더 많은 테스트가 필요합니다

 int start(){
       for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) {
         if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
             if (OrderSymbol()!= Symbol ()) continue ;
               double Pip= Point * 10 ,TSTP=TrailingStart*Pip,Trail=TrailingStop*Pip,SL=StopLoss*Pip;                
                   if (OrderType()==OP_BUY){
                     if (Bid-OrderOpenPrice()>TSTP){
                         if (OrderStopLoss()<Bid-Trail){
                           if (!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Trail,OrderTakeProfit(),Orange))
                               Print ( "Error Buy TrailingStop: " , GetLastError ());
            }
         }
 
Trader3000 :

알겠습니다. 대단히 감사합니다. 실제로 이전에 여기에 게시한 코드에 따라 처음에는 모든 'if' 문에 대괄호가 있었지만 해당 코드가 작동하지 않았기 때문에 이전 게시물에 붙여넣은 코드 복사를 포함하여 다양한 다른 작업을 시도했습니다. 내가 언급했듯이 이것은 실제로 내 코드도 아니지만 모든 쌍에서 작동하지도 않습니다. 그러나 브래킷을 다시 교체하고 다른 조언을 따를 것입니다. 그 동안 나는 OrderSelect가 터미널에서 첫 번째 주문의 Symbol을 인쇄하고 EA가 켜져 있는 것이 아니라 실제로 잘못되지 않았다는 것을 배웠습니다.

편집: 제안 #3에 감사드립니다!!!!!!! 나는 이것이 문제라고 생각합니다. 왜냐하면 Order는 먼저 Symbol에 의해 선택되어야 하고 그 다음 값이 저장되어야 하기 때문입니다. 그래서 변수를 아래와 같이 해당 기능 아래로 옮겼고 지금은 작동하는 것 같습니다(그러나 확실히 알기 전에 더 많은 테스트가 필요합니다

당신의 최신 코드를 살펴보면, 나는 이것을 말할 수 있습니다 - I GIVE UP! (당신은 추적을 거부합니다)!
 
FMIC : 귀하의 최신 코드를 살펴보면, 제가 할 말이 있습니다 - I GIVE UP! (당신은 추적을 거부합니다)!
이제 당신은 그들이 모든 사람의 시간을 낭비할 때 내 "단단한 비판" 을 이해할 것입니다. 나는 "단순한 것들" 을 이해하지만 그들은 모두의 시간을 낭비하는 것이 용인된다고 생각하지만 나는 그렇지 않습니다.

Trader3000 : 이게 문제인 것 같은데...
int start(){
       for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) {
         if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
             if (OrderSymbol()!= Symbol ()) continue ;
               double Pip= Point * 10 , TSTP=TrailingStart*Pip, Trail=TrailingStop*Pip, SL=StopLoss*Pip;
                  if (OrderType()==OP_BUY){
                     if (Bid-OrderOpenPrice()>TSTP){
                         if (OrderStopLoss()<Bid-Trail){
                           if (!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Trail, OrderTakeProfit(), Orange))
                               Print ( "Error Buy TrailingStop: " , GetLastError ());
            }
         }
당신의 문제는 당신이 생각하지 않는다는 것입니다.
int start(){
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)) if (OrderSymbol()!= Symbol ()) continue ;
// Everything below is executed if NO order is selected or a selected order is symbol
       double Pip= Point * 10 , TSTP=TrailingStart*Pip, Trail=TrailingStop*Pip,SL=StopLoss*Pip;
       if (OrderType()==OP_BUY)
      && Bid-OrderOpenPrice()>TSTP)
      && OrderStopLoss()<Bid-Trail){
         if (!OrderModify(OrderTicket(), OrderOpenPrice(), Bid-Trail, OrderTakeProfit(), Orange))
            Print ( "Error Buy TrailingStop: " , GetLastError ());
      }
   :
 
WHRoeder :
이제 당신은 그들이 모든 사람의 시간을 낭비할 때 내 "단단한 비판" 을 이해할 것입니다. 나는 "단순한 것들" 을 이해하지만 그들은 모두의 시간을 낭비하는 것이 용인된다고 생각하지만 나는 그렇지 않습니다.

예! 불행히도, 당신이 맞는 것 같습니다!

 

답변 감사합니다. 그래서 아래와 같이 코드를 이전 버전으로 다시 변경했습니다. 이와 같이 정지 레벨이 50 포인트인 모든 쌍에서 완벽하게 작동하는 것처럼 보이지만 외부 변수가 정지 레벨보다 높더라도 정지 레벨이 더 높은 쌍(예: EURAUD)에서는 작동하지 않습니다. 그래서 이것은 이상하다.

 extern int TrailingStart= 15 ;
extern int TrailingStop= 5 ;
double stoplevel=(MarketInfo( Symbol (),MODE_STOPLEVEL))/ 10 ;
int TS=TrailingStart-TrailingStop;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init(){
   if (TS<stoplevel){
       MessageBox ( "Please note: Your inputs for TrailingStart and/or TrailingStop cannot" +
                 "\nbe less than the minimum levels required by your broker and the" +
                 "\nTrailingStart has been increased automatically to " + StringConcatenate (stoplevel+TrailingStop)+ " pips" );
     } 
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit(){
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start(){
   double Pip= Point * 10 ;
   if (TS<stoplevel) TrailingStart=( int )stoplevel+TrailingStop;
           
   if (!IsTradeAllowed()){
       MessageBox ( "This Expert Advisor requires Auto Trading. Please reload the EA or right click on" +
                 "\nthe chart to bring up the inputs window. Under the common tab check the box to" +
                 "\nallow live trading" );
       Sleep ( 50000 );
     }
   if (!IsExpertEnabled()){
       MessageBox ( "This Expert Advisor requires Auto Trading. Please click the button at the top" );
       Sleep ( 50000 );
     } 
   int ticket= 0 ,buy_ticket= 0 ,sell_ticket= 0 ;  
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
       if ( OrderSelect (i,SELECT_BY_POS) && OrderSymbol()== Symbol ()){
      ticket++;
       if (OrderType()==OP_BUY) buy_ticket=OrderTicket();
       if (OrderType()==OP_SELL) sell_ticket=OrderTicket();
      }
             if (OrderType()==OP_BUY){
               if ( OrderSelect (buy_ticket,SELECT_BY_TICKET)){
                   if ((Bid-OrderOpenPrice())>(TrailingStart*Pip)){
                     if (OrderStopLoss()<Bid-(TrailingStop*Pip)){
                         if (OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(TrailingStop*Pip),OrderTakeProfit(),Blue))
                         Print ( "Buy = " , GetLastError ());
                         return ( 0 );
                        RefreshRates();
                        }     
                     }  
                  }     
               }
             if (OrderType()==OP_SELL){
               if ( OrderSelect (sell_ticket,SELECT_BY_TICKET)){
                   if ((OrderOpenPrice()-Ask)>(TrailingStart*Pip)){
                     if (OrderStopLoss()>Ask+(TrailingStop*Pip) || OrderStopLoss()== 0 ){
                         if (OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(TrailingStop*Pip),OrderTakeProfit(),Red))
                         Print ( "Sell = " , GetLastError ());
                         return ( 0 );
                        RefreshRates();
                        }
                     }
                  }  
               }
             
   return ( 0 );
}
//+------------------------------------------------------------------+
 

또한 나와 매우 유사한 코드를 가진 다른 EA를 찾아 코드를 비교했습니다. 나는 주요 차이점을 강조했습니다.

1. 감소 대신 증가

2. Point*10 대신 Point로 모든 것을 곱하십시오.

3. 그는 Trailingstop과 Trailingstep을 함께 더한 다음 하나를 빼고 Trailingstep으로 순서를 수정합니다. 이것을 올바르게 이해하면 Trailingstart는 15핍(150포인트) 이동 후에 활성화됩니다. 내 EA에서는 가격이 5핍 뒤쳐지고 가격이 다시 하락하여 이 5핍 수준에 도달하면 중단됩니다. 그의 EA에서는 15핍 후에도 활성화되지만 뒤에 오는 핍 수는 19(15+5-1)이므로 중지하려면 가격이 19핍 하락해야 합니다. 예: OrderOpenPrice는 1.50000입니다. 가격은 Trailingstop을 활성화하는 1.50150까지 150포인트 올라갑니다. 가격이 다시 1.50100으로 떨어지면 5핍 이익을 위해 중단됩니다. 그의 EA에서 Trailingstop도 1.50150에서 활성화되지만 흔적은 1.49960에 있습니다. 정지가 stoplevel에 가깝기 때문에 오류 130 이 발생할 것이라고 생각합니다. 아니면 내가 이것을 잘못 이해하고 있습니까?

내 문제가 이들 중 하나 이상에 있을 수 있습니까?

 //+------------------------------------------------------------------+
//|                                                   e-Trailing.mq4 |
//|                                           Êèì Èãîðü Â. aka KimIV |
//|                                              http://www.kimiv.ru |
//|                                                                  |
//| 12.09.2005 Àâòîìàòè÷åñêèé Trailing Stop âñåõ îòêðûòûõ ïîçèöèé    |
//|            Âåøàòü òîëüêî íà îäèí ãðàôèê                          |
//+------------------------------------------------------------------+
#property copyright "Êèì Èãîðü Â. aka KimIV"
#property link        "http://www.kimiv.ru"

//------- Âíåøíèå ïàðàìåòðû ------------------------------------------
extern bool    ProfitTrailing = True;   // Òðàëèòü òîëüêî ïðîôèò
extern int     TrailingStop   = 15 ;     // Ôèêñèðîâàííûé ðàçìåð òðàëà
extern int     TrailingStep   = 5 ;     // Øàã òðàëà
extern bool    UseSound       = True;   // Èñïîëüçîâàòü çâóêîâîé ñèãíàë
extern string NameFileSound  = "expert.wav" ;   // Íàèìåíîâàíèå çâóêîâîãî ôàéëà

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void start() {
   for ( int i= 0 ; i< OrdersTotal (); i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
      TrailingPositions();
    }
  }
}

//+------------------------------------------------------------------+
//| Ñîïðîâîæäåíèå ïîçèöèè ïðîñòûì òðàëîì                             |
//+------------------------------------------------------------------+
void TrailingPositions() {
   double pBid, pAsk, pp;

   pp = MarketInfo(OrderSymbol(), MODE_POINT);
   if (OrderType()==OP_BUY) {
    pBid = MarketInfo(OrderSymbol(), MODE_BID);
     if (!ProfitTrailing || (pBid-OrderOpenPrice())>TrailingStop*pp) {
       if (OrderStopLoss()<pBid- (TrailingStop+TrailingStep- 1 ) *pp) {
        ModifyStopLoss(pBid-TrailingStop*pp);
         return ;
      }
    }
  }
   if (OrderType()==OP_SELL) {
    pAsk = MarketInfo(OrderSymbol(), MODE_ASK);
     if (!ProfitTrailing || OrderOpenPrice()-pAsk>TrailingStop*pp) {
       if (OrderStopLoss()>pAsk+(TrailingStop+TrailingStep- 1 )*pp || OrderStopLoss()== 0 ) {
        ModifyStopLoss(pAsk+TrailingStop*pp);
         return ;
      }
    }
  }
}

//+------------------------------------------------------------------+
//| Ïåðåíîñ óðîâíÿ StopLoss                                          |
//| Ïàðàìåòðû:                                                       |
//|   ldStopLoss - óðîâåíü StopLoss                                  |
//+------------------------------------------------------------------+
void ModifyStopLoss( double ldStopLoss) {
   bool fm;

  fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(), 0 ,CLR_NONE);
   if (fm && UseSound) PlaySound (NameFileSound);
}
//+------------------------------------------------------------------+
 
Trader3000 :

또한 나와 매우 유사한 코드를 가진 다른 EA를 찾아 코드를 비교했습니다.

내가 당신의 논리를 이해하는지 보자! 당신은 어디에 있는지 알고 있고 당신의 코드에 기꺼이 통합할 의향이 있는 다른 사람에게서 다른 EA를 찾고 싶지만 당신을 돕고 문제를 수정하기 위해 특별히 작성된 코드를 가져갈 생각은 없습니다!!!

와! 당신이 얼마나 논리적입니까! 당신이 그를 필요로 할 때 SPOCK은 어디에 있습니다!

스팍, 편히 쉬세요! 우리 모두는 당신을 그리워합니다!

 
FMIC :

내가 당신의 논리를 이해하는지 보자! 당신은 어디에 있는지 알고 있고 당신의 코드에 기꺼이 통합할 의향이 있는 다른 사람에게서 다른 EA를 찾고 싶지만 당신을 돕고 문제를 수정하기 위해 특별히 작성된 코드를 가져갈 생각은 없습니다!!!

와! 당신이 얼마나 논리적입니까! 당신이 그를 필요로 할 때 SPOCK은 어디에 있습니다!

스팍, 편히 쉬세요! 우리 모두는 당신을 그리워합니다!

나는 마침내 그것을 알아 냈으므로 도움 (및 비판)을 위해 모든 사람에게 감사드립니다. 당신과 Mike가 첫 페이지에 게시한 코드로 돌아가서 내 실수를 보았습니다. 너무 미묘해서 간과했을 수도 있지만 대부분 코드의 논리를 제대로 이해하지 못했기 때문입니다. 문제는 TrailingStop의 핍 양이 뒤에 오는 핍의 양이라고 생각했다는 것입니다. 그러나 뒤에 오는 핍 수는 실제로 TrailingStart-TrailingStop입니다. 그래서 내 설정은 15와 5를 입력했기 때문에 gbpjpy와 같은 쌍의 stoplevel 아래에 있었습니다. 5가 stoplevel 8보다 낮기 때문입니다. TrailingStop을 단순히 증가시키면 이제 모든 쌍에서 작동합니다. 고맙습니다!!!