초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 559

 
akarustam :

여기 MT5에서 Expert Advisor 프로그램을 테스트한 기적이 있습니다(그림 파일 참조)... 마이너스 균형에 플러스 에퀴티가 있을 수 있습니까? 잔액은 언제 마이너스입니까? 상인들에게 눈을 돌리기 전에 마음이 많이 바뀌었고 아직까지는 생각이 안 난다... 이제 자야 할 때인 것 같다.)

오픈 소스 및 세트에 관심이 있는 사람이 있으면 알려주십시오. - 물론이죠. 헤징으로 MT5를 마스터하기 시작했지만, 보라, 기적)

기적은 없습니다. 플러스가 큰 오픈 포지션이 있고, 잔액보다 손실이 큰 클로즈드 포지션 이 있습니다. 오픈 포지션을 유지하기에 충분한 자금이 있기 때문에 드레인이 없습니다.
 
Artyom Trishkin :
기적은 없습니다. 플러스가 큰 오픈 포지션이 있고, 잔액보다 손실이 큰 클로즈드 포지션 이 있습니다. 오픈 포지션을 유지하기에 충분한 자금이 있기 때문에 드레인이 없습니다.
모든 것이 너무 간단합니다 ... 감사합니다!
 

제 실수가 무엇인지 알려주세요.

for(int i=0;i<N_Sell;i++) printf("OpenSellTime[%d] = %G",i,TimeToString(OpenSellTime[i],TIME_DATE|TIME_MINUTES)," PriceOpenSell[%d] = %G",i,PriceOpenSell[i]);

OpenSellTime 배열의 날짜는 인쇄되지 않으며 표현식의 두 번째 부분인 PriceOpenSell도 인쇄되지 않습니다.

그리고 %G 및 %d같은 printf 명령 에 대해서는 아무 것도 찾을 수 없습니다.

 

모두에게 좋은 하루!)

프로그래밍에서 주전자에 대한 그런 질문 ...

새 빌드에 대한 어드바이저를 컴파일하려고 하는데 컴파일러에서 다양한 오류가 발생합니다...

여기 그 중 하나가 있습니다

if(oppositedelete){ 삭제( OP_SELLSTOP); 삭제( OP_SELLLIMIT);}

빨간색으로 표시된 이 코드 조각에는 2개의 오류가 있습니다. '(' - 개체 포인터 가 필요함

오류의 본질에 대해 조금 읽은 후 이름이 예약되어 있고 교체해야한다는 것을 깨달았습니다 ...

그리고 문제는 무엇을 교체할 것인가입니다.

 
Anton Razmyslov :

모두에게 좋은 하루!)

프로그래밍에서 주전자에 대한 그런 질문 ...

새 빌드에 대한 어드바이저를 컴파일하려고 하는데 컴파일러에서 다양한 오류가 발생합니다...

여기 그 중 하나가 있습니다

if(oppositedelete){ 삭제( OP_SELLSTOP); 삭제( OP_SELLLIMIT);}

빨간색으로 표시된 이 코드 조각에는 2개의 오류가 있습니다. '(' - 개체 포인터가 필요함

오류의 본질에 대해 조금 읽은 후 이름이 예약되어 있고 교체해야한다는 것을 깨달았습니다 ...

그리고 문제는 무엇을 교체할 것인가입니다.

무엇이든 생각할 수 있습니다. 예를 들어 _delete 또는 delete_1294_765_1912 또는 그냥 나폴레옹
 

코드에 이 줄이 있습니다.

Print (";OpenSellTime - ",TimeToString(OpenSellTime[N_Sell],TIME_DATE|TIME_MINUTES), ";PriceOpenSell", PriceOpenSell[N_Sell]);

출력에 이 텍스트가 표시되는 이유는 무엇입니까?

오픈셀타임 - 2015.12.01 11:15

어디 ";" 두 번째 부분은 " PriceOpenSell"입니까?

 
-Aleks- :

코드에 이 줄이 있습니다.

Print (";OpenSellTime - ",TimeToString(OpenSellTime[N_Sell],TIME_DATE|TIME_MINUTES), ";PriceOpenSell", PriceOpenSell[N_Sell]);

출력에 이 텍스트가 표시되는 이유는 무엇입니까?

오픈셀타임 - 2015.12.01 11:15

어디 ";" 두 번째 부분은 " PriceOpenSell"입니까?

제거됨 ";" - 벌었다.

printf 에 대한 질문이 남아 있습니다 ...

 

반대 포지션 청산 요청은 어떻게 보내나요?

전과 같이 닫으면 반대로 바니쉬 됩니다))

이미 모든 것을 시도했지만 여전히 오류가 발생합니다. 2016.04.15 13:17:24 코어 1 2016.03.29 09:00:00 실패 포지션 #64 매수 포지션 #0으로 0.81 EURUSD 매수 [잘못된 요청]

채워야 할 필드와 그렇지 않은 필드는 무엇입니까? 숏포지션이 열려있든 길든 상관없다는 것을 이해합니다.

 //+------------------------------------------------------------------+
//| Закрытие  позиции по типу                                        |
//+------------------------------------------------------------------+
void PositionClose( double lot, int P_type, long id)
  {
Print ( "Вход в функцию Закрытие  позиции по типу !" );
     ZeroMemory (mrequest); ZeroMemory (mresult);             // обнуляем значения mrequest, mresult

   //--- Получить текущее значение котировки в структуру типа MqlTick
   if (! SymbolInfoTick ( _Symbol ,latest_price))
     {
       Alert ( "Ошибка получения последних котировок - ошибка:" , GetLastError (), "!!" );
       return ;
     }            
//--- формируем торговый запрос
      mrequest.action = TRADE_ACTION_CLOSE_BY;                                               // закрыть позицию встречной
      mrequest.order = id; 
//      mrequest.action = TRADE_ACTION_DEAL;                                  // немедленное исполнение
//      mrequest.price =  NormalizeDouble(latest_price.bid,_Digits);                      // последняя цена ask
//    mrequest.sl = 0;               // Stop Loss
//     mrequest.tp = 0;               // Take Profit
      mrequest.symbol = _Symbol ;                         // символ
      mrequest.volume = lot;                             // количество лотов для торговли
 //     mrequest.magic = MAGIC;                               // Magic Number
      
//     if (P_type == 0) mrequest.type = ORDER_TYPE_SELL; // проверяем тип позиции
//     if (P_type == 1) mrequest.type = ORDER_TYPE_BUY;     
      mrequest.type = ORDER_TYPE_CLOSE_BY;
      mrequest.type_filling = ORDER_FILLING_FOK ;         // тип исполнения ордера - все или ничего
      mrequest.deviation= 10 ;                             // проскальзывание от текущей цены
                                        
             if ( OrderSend (mrequest,mresult)> 0 )             // если значение отосланного ордера не ноль, то 
                  {   if (mresult.retcode== 10009 || mresult.retcode== 10008 )
                     Print ( " позиция  закрыта !" );
                  } else {
                     Print (ResultRetcodeDescription(mresult.retcode));
                     return ;
                         }
  }
 

안녕하세요! 테스터 질문입니다.

다중 통화 Expert Advisor를 테스트 중이며 거래 중인 모든 통화 쌍에 대한 시각화 도우미의 모든 창을 보고 싶습니다.

시각화 도우미 도움말은 시각화 도우미 기본 메뉴의 "보기" 섹션에 있는 특정 "차트" 명령에 대해 알려줍니다. 이 명령으로 새 차트를 분명히 열 수 있습니다. 하지만 어떤 이유에서인지 "차트" 명령이 전혀 없기 때문에 추가 쌍에 대한 차트를 열 수 없습니다. 여기서 문제가 무엇입니까?

 
Aleksandr Prishenko :

반대 포지션 청산 요청은 어떻게 보내나요?

이전과 같이 닫으면 반대로 바니쉬 처리됨))

이미 모든 것을 시도했지만 여전히 오류가 발생합니다. 2016.04.15 13:17:24 코어 1 2016.03.29 09:00:00 실패 포지션 #64 매수 포지션 #0으로 0.81 EURUSD 매수 [잘못된 요청]

채워야 할 필드와 그렇지 않은 필드는 무엇입니까? 숏포지션이 열려있든 길든 상관없다는 것을 이해합니다.

최소한의 코드 사용 - 표준 라이브러리 사용:

 //+------------------------------------------------------------------+
//|                                                       TestEA.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link        "http://wmua.ru/slesar/"
#property version    "1.00"

#include <Trade\Trade.mqh>

CTrade my_trade;
ulong     result_deal_0  = 0 ;
ulong     result_deal_1  = 0 ;
bool      first_start    = false ;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   first_start= false ;
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   if (!first_start)
     {
      my_trade.Sell( 0.01 );
      result_deal_0=my_trade.ResultDeal();
       Sleep ( 1000 );

      my_trade.Buy( 0.02 );
      result_deal_1=my_trade.ResultDeal();
       Sleep ( 1000 );

       if (result_deal_0!= 0 && result_deal_1!= 0 )
         PositionCloseBy(result_deal_0,result_deal_1);

      first_start= true ;
     }
  }
//+------------------------------------------------------------------+
//| Position Close By                                                |
//+------------------------------------------------------------------+
void PositionCloseBy( ulong ticket, ulong ticket_by)
  {
   my_trade.PositionCloseBy(result_deal_0,result_deal_1);
  }
//+------------------------------------------------------------------+

에이전트 로그:

ES       0        09 : 12 : 21.189     Trade   2016.04 . 14 00 : 00 : 30    instant sell 0.01 EURUSD at 1.12728 ( 1.12728 / 1.12736 / 1.12728 )
IL       0        09 : 12 : 21.189     Trades   2016.04 . 14 00 : 00 : 30    deal # 2 sell 0.01 EURUSD at 1.12728 done (based on order # 2 )
OP       0        09 : 12 : 21.189     Trade   2016.04 . 14 00 : 00 : 30    deal performed [ # 2 sell 0.01 EURUSD at 1.12728 ]
NF       0        09 : 12 : 21.189     Trade   2016.04 . 14 00 : 00 : 30    order performed sell 0.01 at 1.12728 [ # 2 sell 0.01 EURUSD at 1.12728 ]
GJ       0        09 : 12 : 21.192     TestEA (EURUSD,H1)       2016.04 . 14 00 : 00 : 30    CTrade:: OrderSend : instant sell 0.01 EURUSD at 1.12728 [done at 1.12728 ]
KH       0        09 : 12 : 21.192     Trade   2016.04 . 14 00 : 00 : 31    instant buy 0.02 EURUSD at 1.12736 ( 1.12728 / 1.12736 / 1.12728 )
OD       0        09 : 12 : 21.192     Trades   2016.04 . 14 00 : 00 : 31    deal # 3 buy 0.02 EURUSD at 1.12736 done (based on order # 3 )
GI       0        09 : 12 : 21.193     Trade   2016.04 . 14 00 : 00 : 31    deal performed [ # 3 buy 0.02 EURUSD at 1.12736 ]
LM       0        09 : 12 : 21.193     Trade   2016.04 . 14 00 : 00 : 31    order performed buy 0.02 at 1.12736 [ # 3 buy 0.02 EURUSD at 1.12736 ]
NS       0        09 : 12 : 21.193     TestEA (EURUSD,H1)       2016.04 . 14 00 : 00 : 31    CTrade:: OrderSend : instant buy 0.02 EURUSD at 1.12736 [done at 1.12736 ]
OP       0        09 : 12 : 21.193     TestEA (EURUSD,H1)       2016.04 . 14 00 : 00 : 32    Вход в функцию Закрытие  позиции по типу !
GI       0        09 : 12 : 21.193     Trade   2016.04 . 14 00 : 00 : 32    close position # 2 sell 0.01 EURUSD by position # 3 buy 0.02 EURUSD ( 1.12728 / 1.12736 / 1.12728 )
OM       0        09 : 12 : 21.193     Trades   2016.04 . 14 00 : 00 : 32    deal # 4 buy 0.01 EURUSD at 1.12736 done (based on order # 4 )
RK       0        09 : 12 : 21.193     Trades   2016.04 . 14 00 : 00 : 32    deal # 5 sell 0.01 EURUSD at 1.12728 done (based on order # 4 )
EF       0        09 : 12 : 21.193     TestEA (EURUSD,H1)       2016.04 . 14 00 : 00 : 32    CTrade:: OrderSend : unknown action 10 [done]
EI       0        09 : 12 : 21.423     Trade   2016.04 . 14 23 : 59 : 59    position closed due end of test at 1.12663 [ # 3 buy 0.01 EURUSD 1.12736 ]
JG       0        09 : 12 : 21.423     Trades   2016.04 . 14 23 : 59 : 59    deal # 6 sell 0.01 EURUSD at 1.12663 done (based on order # 5 )
HN       0        09 : 12 : 21.423     Trade   2016.04 . 14 23 : 59 : 59    deal performed [ # 6 sell 0.01 EURUSD at 1.12663 ]
IS       0        09 : 12 : 21.423     Trade   2016.04 . 14 23 : 59 : 59    order performed sell 0.01 at 1.12663 [ # 5 sell 0.01 EURUSD at 1.12663 ]
사유: