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

 
artem artem # :

MakarFX 감사합니다! 이제이 첫 번째 주문은 신호 없이는 불필요하지만 지금은 첫 번째 신호 순서(정상)에서 어떤 이유로 인해 2개의 촛불이 더 일찍 시작됩니다))) 그런 다음 모든 것이 정상이며 다른 주문에서는 올바른 순간에 입력됩니다. ) 테스터에서 메시지까지 화면을 첨부했는데 이 1차 주문에도 불구하고 가장 중요한건 다 되었네요 다시한번 정말 감사합니다) 마술사들과 이해를 하고 나서 외부변수를 만들어서 첨부할 때 전문가는 통화 쌍의 특정 차트에 대해 각 쌍의 숫자를 개별적으로 변경합니다.

개봉기 한번 볼게요.

캐릭터를 조종한다면 마법을 바꿀 필요가 없다.

 
Nerd Trader # :

이미 잊어버렸습니다... 하지만 처음에는 그렇게 했습니다(내가 커밋한 것이 좋습니다). 하지만 조건의 메서드가 신뢰할 수 없는 것처럼 보였고 변경된 순서를 나타내기 위해 더 명시적인 무언가를 원했습니다.

따라서 각 새 틱의 조건을 확인해야 합니다. 이전 틱에서 작동하지 않으면 새 틱에서 변경됩니다.

글쎄, 당신은 오류 처리를해야합니다.

 
Nerd Trader # :

이미 잊어버렸습니다... 하지만 처음에는 그렇게 했습니다(내가 커밋한 것이 좋습니다). 하지만 조건의 메서드가 신뢰할 수 없는 것처럼 보였고 변경된 순서를 나타내기 위해 더 명시적인 무언가를 원했습니다.

 //+------------------------------------------------------------------+
if (OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), OrderTakeProfit(), 0 ))
   ObjectCreate ( 0 ,OrderTicket(), OBJ_ARROW_UP , 0 ,Time[ 0 ],Bid);
//+------------------------------------------------------------------+
int NameObject()
  {
   int ticket=- 1 ;
   for ( int i= 0 ;i< ObjectsTotal ();i++)
     {
      ticket= StringToInteger ( ObjectName ( 0 ,i, 0 ));
     }
   return (ticket);
  }
//+----------------------------------------------------------------------------+
void GetTicketOrder()
  {
   int result=- 1 ;
   for ( int cnt = OrdersTotal () - 1 ; cnt >= 0 ; cnt--) 
     {
       if ( OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES)) 
        {
         if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic)
           {
             if (OrderType() == OP_BUY || OrderType() == OP_SELL)
              {
               if (OrderTicket() == NameObject())
                  {
                     делай все что хочешь
                  }
              }
           }
        }
     }
  }
 
EVGENII SHELIPOV 예금 통화 의 이익을 더한 값과 같으면 전체 주문 그리드가 닫힙니다.

이익 대신 포인트가 있도록 코드를 변경하도록 도와주세요. 고맙습니다.

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает суммарный профит открытых позиций в пунктах          |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int GetProfitOpenPosInPoint( string sy= "" , int op=- 1 , int mn=- 1 ) {
   double p;
   int     i, k= OrdersTotal (), pr= 0 ;

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if ((OrderSymbol()==sy || sy== "" ) && (op< 0 || OrderType()==op)) {
         if (mn< 0 || OrderMagicNumber()==mn) {
          p=MarketInfo(OrderSymbol(), MODE_POINT);
           if (p== 0 ) if ( StringFind (OrderSymbol(), "JPY" )< 0 ) p= 0.0001 ; else p= 0.01 ;
           if (OrderType()==OP_BUY) {
            pr+=(MarketInfo(OrderSymbol(), MODE_BID)-OrderOpenPrice())/p;
          }
           if (OrderType()==OP_SELL) {
            pr+=(OrderOpenPrice()-MarketInfo(OrderSymbol(), MODE_ASK))/p;
          }
        }
      }
    }
  }
   return (pr);
}
 
artem artem # :

MakarFX 감사합니다! 이제이 첫 번째 주문은 신호가 없으면 불필요한 것이 아니지만 이제 첫 번째 신호 순서 (정상)에서 어떤 이유로 든 촛불 2 개를 더 일찍 입력합니다))) 그런 다음 모든 것이 정상입니다. 다른 주문에서는 입력합니다. 바로 그때) 테스터의 화면을 메시지에 첨부했는데 이 1차 주문에도 불구하고 - 가장 중요한 일이 끝났음에도 불구하고 다시 한 번 정말 감사합니다) 마술사들과 이해하고 나서 외부 변수를 만들어 보겠습니다. 통화 쌍의 특정 차트에 전문가를 첨부하고 각 쌍의 숫자를 개별적으로 변경합니다.

테스트 기간과 확인 횟수는 어떻게 됩니까?
 
MakarFX # :

Makar, 내가 이해하는 한, 이것은 CalculiteProfit() 함수 대신에 시도되어야 합니다.

 
EVGENII SHELIPOV # :

Makar, 내가 이해하는 한, 이것은 CalculiteProfit() 함수 대신에 시도되어야 합니다.

그리고 그것을 변경

 int op = GetProfitOpenPosInPoint( "" , - 1 , Magic ); 
 
MakarFX # :
테스트 기간과 확인 횟수는 어떻게 됩니까?

MakarFX 는 내가 첨부한 화면에서 EUR \ USD - M 30 - 모든 틱 - 08/01/21 ~ 09/03/21에서 테스트했습니다. - 26개의 주문이 있었습니다( 그러나 나는 상수를 4에서 8로 변경했고 더 많은 양의 양초를 보기로 결정했습니다)

상수가 4개의 양초로 반환되면 같은 기간 동안 35개의 주문이 발생하지만 첫 번째 주문에서 2개도 먼저 입력됩니다.

 
MakarFX # :

그리고 그것을 변경

Makar는 최소 및 최대 주문만 사용할 수 있는지 알려주세요.

 
EVGENII SHELIPOV # :

Makar는 최소 및 최대 주문만 사용할 수 있는지 알려주세요.

티켓 또는 가격에 대해 "최소 및 최대"를 의미합니까?