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

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

만들어진. 이전 잡지와 전혀 다르지 않다.

오류 또는 아무것도 없습니다.

오류가 없어야 합니다. 로그를 보여주세요.
 
for ( int i = 0 ; i <= OrdersTotal (); i++)
       if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
         if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic)
             return ( false );

그리고 여기에 사이클 브래킷이 필요하지 않습니까? 한 줄 이상이 없을 때만 넣을 수없는 것 같습니다.

상향:
이해합니다. 여기에 한 줄이 있습니다.

 
MakarFX # :
오류가 없어야 합니다. 로그를 보여주세요.

다음은 MT4 로그의 마지막 페이지입니다.

이 잡지가 필요합니까?

파일:
0w11cw.txt  30 kb
 
죄송합니다. 혼란스러운 비교 및 할당. 모든 것이 정상이 되었습니다. 나는 완전히 멍하니 앉아 있는 듯 하다. 글을 못쓰고 스트레스도 받고 머리가 전혀 안돌아가는건 당연하지만.
 
законопослушный гражданин # :

다음은 MT4 로그의 마지막 페이지입니다.

이 일지가 필요합니까?

다음은 귀하의 일기장에 있는 답변입니다.)

주문을 연 후 bCheckOrders() 함수는 주문이 없음을 나타내므로 열기가 계속됩니다.

 
pribludilsa # :
물론 머리는 알고 있었지만 머리는 전혀 작동하지 않습니다.

당신이 표현하는 좋은 생각))))

 
MakarFX # :

당신이 표현하는 좋은 생각))))

내 말은, 할당 및 비교를 작성하는 방법을 알고 있었지만 여전히 혼란스럽습니다. 나는 혼란스러워졌다.
 
pribludilsa # :
내 말은, 할당 및 비교를 작성하는 방법을 알고 있었지만 여전히 혼란스럽습니다. 나는 혼란스러워졌다.

나는 그것에 대해 이야기하는 것이 아닙니다 ...

프리블루딜사 # :
물론 머리는 알고 있었지만 머리는 전혀 작동하지 않습니다 .

 
MakarFX # :

다음은 귀하의 일기장에 있는 답변입니다.)

주문을 연 후 bCheckOrders() 함수는 주문이 없음을 나타내므로 열기가 계속됩니다.

젠장. 어디에 명시되어 있습니까?

내가 이 잡지를 잘못 읽고 있는 것은 아닐까?

기능   bCheckOrders()   주문을 연 후 주문이 없는 것으로 표시되므로 void OnTick()으로 열기가 계속됩니다 . 나는 이것이 그렇지 않다는 것을 이해합니다.

주문이 종료될 때까지 bCheckOrders()- 주문이 없다고 표시할 수 없습니다. 안 그래?

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

젠장. 어디에 명시되어 있습니까?

내가 이 잡지를 잘못 읽고 있는 것은 아닐까?

기능   bCheckOrders()   주문을 연 후 주문이 없는 것으로 표시되므로 void OnTick()으로 열기가 계속됩니다 . 나는 이것이 그렇지 않다는 것을 이해합니다.

주문이 종료될 때까지 bCheckOrders()- 주문이 없다고 표시할 수 없습니다. 안 그래?

bCheckOrders() 가 제대로 작동하지 않습니다!

이미 주문을 계산하는 기능을 작성했습니다 ...

이렇게 하면 모든 것이 작동합니다.

bCheckOrders()를 이 함수로 바꿉니다.

 //+------------------------------------------------------------------+
//| Подсчет открытых ордеров                                         |
//+------------------------------------------------------------------+
int CountOrders() 
  {
   int cnt= 0 ;
   int i= OrdersTotal ()- 1 ;
   for ( int pos=i;pos>= 0 ;pos--)
     {
       if ( OrderSelect (pos, SELECT_BY_POS, MODE_TRADES))
        {
         if (OrderSymbol()== _Symbol )
           {
             if (OrderMagicNumber()==Magic) cnt++;
           }
        }
     }
   return (cnt);
  }

bCheckOrders() 대신 OnTick ()에서 다음과 같이 작성하십시오.

 //+------------------------------------------------------------------+
void OnTick ()
  {
// Получим значение индикатора
   dMA = iMA ( Symbol (), 0 ,PeriodMA, MovingShift, MODE_SMA , PRICE_CLOSE , 0 ); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.

// Если нет открытых ордеров, то входим в условие
   if (CountOrders()== 0 )
     {
// Если появился сигнал на покупку, то откроем ордер на покупку
       if (bSignalBuy() == true )
         vOrderOpenBuy();

// Если появился сигнал на продажу, то откроем ордер на продажу
       if (bSignalSell() == true )
         vOrderOpenSell();
     }
// Проверяем, вышел ли текущий баланс по открытому ордеру за вилку из внешних переменных CountLoss и CountProfit

   if (GetProfitFromStart()>CountProfit || GetProfitFromStart()<CountLoss*- 1 )
     {
// Если да, то закроем ордер по текущей цене, не дожидаясь стопа или тейка
      CloseOrder();
     }
DrawLABEL( "lab_Take" , 1 , 5 , 0 ,Color(GetProfitFromStart()> 0 ,Lime,Red), StringConcatenate ( "Profit: " ,DoubleToStr(GetProfitFromStart(), 2 ),AC));
  }