MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1586

 
законопослушный гражданин :

만들어진.

이제 'Lot'는 선언되지 않은 식별자입니다.

나는 필요합니다: extern double dLots = 0.01; 다음으로 대체: extern double Lot = 0.01; ?

dLots 의 더 나은 부지

 
MakarFX :

dLots 의 더 나은 부지

아니오, 작동하지 않습니다))

그렇지도 않고 그 반대도 아닙니다.

더 이상 오류가 발생하지 않지만 여전히 단일 트랜잭션이 열리지 않습니다.

 
законопослушный гражданин :

아니오, 작동하지 않습니다))

그렇지도 않고 그 반대도 아닙니다.

더 이상 오류가 발생하지 않지만 여전히 단일 트랜잭션이 열리지 않습니다.

신호에서 오류를 찾습니다.
 
законопослушный гражданин :

아니오, 작동하지 않습니다))

그렇지도 않고 그 반대도 아닙니다.

더 이상 오류가 발생하지 않지만 여전히 단일 트랜잭션이 열리지 않습니다.

내 기능을 삽입하기 전에 거래가 열렸습니까?
[삭제]  

죄송합니다. 제가 이해하지 못하는 것 같습니다... 하지만!

HZ는 이미 여기에서 작성, 수정 등의 절차가 얼마나 오래 진행되었는지 알고 있습니다. 일부 코드. "질문자" 한 명을 위해! 이것이 이 주제와 어떤 관련이 있습니까?

질문 답변. 또한 모든 것이 개인에 있습니다. 그렇지 않으면 이미 여기에 늪이 있습니다 ... 당신의이 모든 코드의 대다수는 아무것도 아닙니다! 도대체 왜 벌써 20페이지를 더럽힌거야???

 
Сергей Таболин :

죄송합니다. 제가 이해하지 못하는 것 같습니다... 하지만!

HZ는 이미 여기에서 작성, 수정 등의 절차가 얼마나 오래 진행되었는지 알고 있습니다. 일부 코드. 한 "질문자"를 위해! 이것이 이 주제와 어떤 관련이 있습니까?

질문 답변. 또한 모든 것이 개인에 있습니다. 그렇지 않으면 이미 늪이 있습니다 ...이 모든 코드의 대다수는 떨어지지 않았습니다! 도대체 왜 벌써 20페이지를 더럽힌거야???

1) 테마

MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론


2) 청소할 수 있습니까?

[삭제]  
MakarFX :

1) 테마

MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론


2) 청소할 수 있습니까?

나는 청소할 수 없습니다.

누군가를 돕는 데 정말로 관심이 있다면 최소한 이 누군가가 소스를 첨부하도록 하고 코드를 반 페이지에 퍼뜨리지 않도록 하십시오! 그리고 당신은 또한 같은 대답을 .... 단단한 발보! 당신과 한 사람에게만 흥미 롭습니다!

다른 사람을 존중할 필요가 있습니까? 아니면 LS가 작동하지 않습니까?

 
MakarFX :
내 기능을 삽입하기 전에 거래가 열렸습니까?

틀림없이. 그것은 노련한 고문이었다.

기능 사이에 연결이 없는 것 같습니다.

 //+-----------------------------------------------------------------------------------------------+
//|                                                            Функция открытия ордера на покупку |
//+-----------------------------------------------------------------------------------------------+
void vOrderOpenBuy()
  {
   int iOTi = 0 ;   // Тикет ордера

   iOTi = OrderSend ( Symbol (), OP_BUY, Lots() , Ask, iSlippage, 0 , 0 , "" , iMagic, 0 , clrNONE );

// Проверим открылся ли ордер
   if (iOTi > 0 )
       // Есди да, то выставим уровни убытка и прибыли
      vOrderModify(iOTi);
   else
       // Если нет, то получим ошибку
      vError( GetLastError ());
  }

그리고

 //| Расчет лота                                                      |
//+------------------------------------------------------------------+
double Lots()
  {
   double L= 0 ;
   // если последняя закрытая сделка убыточная и лот равен стартовому
   // включаем Мартин
   if (GetInfoLastPos( 2 )< 0 &&GetInfoLastPos( 1 )==dLots) 
     {
      Martin= true ;
     }
   // если последняя закрытая сделка убыточная и лот больше или равен максимальному
   // выключаем Мартин
   if (GetInfoLastPos( 2 )< 0 &&GetInfoLastPos( 1 )>=MaxMartinLot)
     {
      Martin= false ;
     }
   // если последняя закрытая сделка убыточная и Мартин включен, умножаем лот
   if (Martin== true )
     {
      L= NormalizeDouble (GetInfoLastPos( 1 )*K_Martin,DigitsLot);
     }
   // если последняя закрытая сделка убыточная и Мартин выключен, делим лот
   if (Martin== false )
     {
      L= NormalizeDouble (GetInfoLastPos( 1 )/K_Martin,DigitsLot);
     }

   if (L>MAXLOT) L = MAXLOT;
   if (L<MINLOT) L = MINLOT;
   return (L);
  }

나는 무엇이 잘못되었는지 이해할 수 없다.

이전 버전은 다음과 같습니다.

 //|                                                            Функция открытия ордера на продажу |
//+-----------------------------------------------------------------------------------------------+
void vOrderOpenSell()
  {
   int iOTi = 0 ;   // Тикет ордера

   iOTi = OrderSend ( Symbol (), OP_SELL, LOT() , Bid, iSlippage, 0 , 0 , "" , iMagic, 0 , clrNONE );

// Проверим открылся ли ордер
   if (iOTi > 0 )
       // Есди да, то выставим уровни убытка и прибыли
      vOrderModify(iOTi);
   else
       // Если нет, то получим ошибку
      vError( GetLastError ());

그리고

 double LOT()
{
   int n= 0 ;
   double OL=dLots;
   for ( int j = OrdersHistoryTotal()- 1 ; j >= 0 ; j--)
   {
       if ( OrderSelect (j, SELECT_BY_POS,MODE_HISTORY))
      {
         if (OrderSymbol() == Symbol () && OrderMagicNumber() == iMagic)
         {
             if (OrderProfit()< 0 ) 
            {
               if (n== 0 ) OL= NormalizeDouble (OrderLots()*K_Martin,DigitsLot);
               n++;
               if (n>=OrdersClose) { Comment ( "1" ); return (dLots);}
            }
             else
            {
               if (n== 0 ) { Comment ( "2" ); return (dLots);}
               else { Comment ( "3" ); return (OL);}
            }
         }
      }
   }
   return (OL);
}
 
Сергей Таболин :

나는 청소할 수 없습니다.

누군가를 돕는 데 관심이 있다면 최소한 누군가가 소스를 첨부하고 코드를 반 페이지에 퍼뜨리지 않도록 하십시오! 그리고 당신은 또한 같은 대답을 .... 단단한 발보! 당신과 한 사람에게만 흥미 롭습니다!

다른 사람을 존중할 필요가 있습니까? 아니면 LS가 작동하지 않습니까?

나는 모든 사람을 존중합니다. "단단한 발보"는 당신 이외의 누구에게도 방해가되지 않습니다.

코드는 읽을 수 있는 방식으로 PM에 삽입되지 않고 그 사람은 저에게 개인적으로 연락하지 않습니다. 나는 단지 그에게 대답했습니다.

제 글이 불편하셨다면 죄송하지만 다른 방법이 없습니다.

 
законопослушный гражданин :

틀림없이. 그것은 노련한 고문이었다.

기능 사이에 연결이 없는 것 같습니다.

그리고

나는 무엇이 잘못되었는지 이해할 수 없다.

이전 버전은 다음과 같습니다.

그리고

로트를 계산하는 문제라면 오차가 있을 것이고, 오차가 없으면 주문을 여는 조건이 없다.

이전 작업 버전을 첨부하고 살펴보겠습니다.