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

 
MakarFX # :

당신에게 열려 있지 않으면 한 번에 두 개를 여는 조건으로.

그것은 무엇입니까?

 double GetLotSize()
  {
   double Ls= 0 ;
   for ( int pos= OrdersTotal ()- 1 ;pos>= 0 ;pos--)
     {
       if ( OrderSelect (pos, SELECT_BY_POS, MODE_TRADES))
        {
         if (OrderSymbol()== _Symbol && OrderMagicNumber()==Magic)
           {
             if (OrderType()==OP_BUY || OrderType()==OP_SELL) {Ls=OrderLots();}
           }
        }
     }
   return Ls;
  }    

이것은 현재 로트 크기를 계산합니다.

이 매개변수는 LotControl 설정에서 설정됩니다.

각각의 경우: GetLotSize()>LotControl - vOrderOpenSell()을 트리거하려면 bSignalBuy() 신호가 필요합니다.

네, 조건에 따라 두 주문이 동시에 열리는 것으로 알고 있습니다. 제가 처음에 쓴 글입니다. 그러나 vOrderOpenBuy()를 열지 않게 하는 방법은 무엇입니까?

 
Mihail Matkovskij # :

로봇이 이미 한 방향으로 시장에 진입했다면 같은 방향으로 다시 시장에 진입하지 않습니다. 로그인 알고리즘이 작동합니까?

이 조건 이 충족되면

후에

또한 매도 신호와 함께.

그러면 반대 방향으로 진입하는 이유는 조건의 트리거

네. 이것이 내가 필요한 것입니다. 그러나 동시에 다음 조건에 따라 정방향 항목을 중지/제외해야 합니다.

GetLotSize()>LotControl
 
Kedrov # :

저와 함께 해주셔서 감사합니다 Makar!

그리고 여기 스크린샷이 있습니다

예, 흩어져 있습니다)

이제 각 폴더에서 Experts 폴더의 이름을 _ Experts로, Indicators를 _ Indicators로 변경합니다.

한 폴더에서 이름 변경 - 도움이 되지 않는 경우 터미널 시작 - 이름을 다시 변경하고 다음 폴더로 이동합니다.

PS 처음으로 터미널이 평소보다 조금 더 오래 시작됩니다.

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

이것은 현재 로트 크기를 계산합니다.

이 매개변수는 LotControl 설정에서 설정됩니다.

각각의 경우: GetLotSize()>LotControl - vOrderOpenSell()을 트리거하려면 bSignalBuy() 신호가 필요합니다.

네, 조건에 따라 두 주문이 동시에 열리는 것으로 알고 있습니다. 제가 처음에 쓴 글입니다. 그러나 vOrderOpenBuy()를 열지 않게 하는 방법은 무엇입니까?

         if ((bSignalBuy() == true )&&(GetLotSize()>LotControl))
           vOrderOpenSell();
         else
         if (bSignalBuy() == true )
           vOrderOpenBuy();
         
 
законопослушный гражданин # :

네. 이것이 내가 필요한 것입니다. 그러나 동시에 다음 조건에 따라 정방향 항목을 중지/제외해야 합니다.

이 상태가 나를 괴롭힌다.

 // Если нет открытых ордеров, то входим в условие
       if (CountOrders()== 0 )
     {

이 조건에서

GetLotSize()=0
 
MakarFX # :

감사합니다. 수정했습니다. 나는 생각할 것이다.

 
MakarFX # :

이 상태가 나를 괴롭힌다.

이 조건에서

당신이 맞는 것 같습니다.

그래서:

 if ((bSignalBuy() == true )&&(GetLotSize()>LotControl))
         vOrderOpenSell();
         else
         if (bSignalBuy() == true )
         vOrderOpenBuy();

조건(GetLotSize()>LotControl)에 전혀 반응하지 않습니다.

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

당신이 맞는 것 같습니다.

그래서:

조건(GetLotSize()>LotControl)에 전혀 반응하지 않습니다.

GetLotSize()는 마지막으로 닫힌 것에서 가져와야 합니다.

 // Если нет открытых ордеров, то входим в условие
       if (CountOrders()== 0 )
     {

(GetLotSize()>LotControl)이 작동합니다.
 
MakarFX # :

GetLotSize()는 마지막으로 닫힌 것에서 가져와야 합니다.

(GetLotSize()>LotControl)이 작동합니다.

알았어 고마워!

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

네. 이것이 내가 필요한 것입니다. 그러나 동시에 다음 조건에 따라 정방향 항목을 중지/제외해야 합니다.

 if (bSignalBuy()) {
   if (GetLotSize() > LotControl)
    vOrderOpenSell();
   else
    vOrderOpenBuy();
}
 double GetLotSize()
  {
   double Ls= 0 ;
   datetime last = 0 , openTime;
   for ( int pos= OrdersTotal ()- 1 ;pos>= 0 ;pos--)
     {
       if ( OrderSelect (pos, SELECT_BY_POS, MODE_TRADES))
        {
         if (OrderSymbol() == _Symbol && OrderMagicNumber() == Magic)
           {
             if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
               if ((openTime = OrderOpenTime()) > last) {
                 last = openTime;
                 Ls = OrderLots();
               }
             }
           }
        }
     }
   return Ls;
  }