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

 
Ihor Herasko :

SymbolSelect 함수 를 참조하십시오.

고맙습니다!

 
프로그래밍 방식으로 그래프를 더 왼쪽으로 이동하는 방법을 알려주세요. 감사합니다!
 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

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

라빅 , 2018.03.12 14:43

안녕하세요! 이 문제에 직면했습니다.

손절매 없이 거래를 시작하고 이익을 얻습니다.

 OrderSend ( "EURUSD" , OP_BUY , 0.1 , Ask , 0 , 0 , 0 , "" ,Magic, 0 ,Red);

이 주문을 종료하고 싶습니다

 OrderClose (Magic, OrderOpenPrice (), Ask , 0 ,Red);

오류가 발생합니다. OrderClose 오류 131

OrderOpenPrice () 대신 0.1 또는 OrderLots()를 지정하면 오류는 다음과 같습니다. OrderClose 오류 138

문제가 무엇입니까?

문서로 판단하면 더 이상한 클로저를 작성하는 것은 매우 어렵습니다.

 bool    OrderClose (
   int         ticket,       // номер ордера
   double      lots,         // количество лотов
   double      price,       // цена закрытия
   int         slippage,     // максимальное проскальзывание
   color       arrow_color   // цвет
   );
티켓 대신에 마법이 쓰여지고, 볼륨 대신에 개봉 가격이 쓰여진다. 문서를 읽고 코드를 작성할 때 자유롭게 살펴보십시오.


 
Nikolay Gaylis :
프로그래밍 방식으로 그래프를 더 왼쪽으로 이동하는 방법을 알려주세요. 감사합니다!

자동 스크롤 및 오프셋(각각 차트 속성 CHART_AUTOCROLL 및 CHART_SHIFT)을 비활성화한 다음 ChartNavigate() 를 사용해야 합니다 .

 
Ihor Herasko :

자동 스크롤 및 오프셋(각각 차트 속성 CHART_AUTOCROLL 및 CHART_SHIFT)을 비활성화한 다음 ChartNavigate() 를 사용해야 합니다 .

감사하다!

 

모두를 환영합니다! 저는 EA를 만들 려고 하는 초보자입니다. 작동 원리를 알아보기 위해 간단하게 작성했습니다. 신호 발생 시 경보가 작동하지 않습니다. 오류가 무엇인지 명확하지 않습니다. 내 실수가 무엇인지 알아낼 수 있도록 도와주시겠습니까?

 //+------------------------------------------------------------------+
//|                                             тенк больше кидж.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
 double tenkan= iIchimoku ( NULL , 0 , 9 , 26 , 52 , MODE_TENKANSEN , 1 );       //ЗНАЧЕНИЕ ТЕНКАН
 double kijun= iIchimoku ( NULL , 0 , 9 , 26 , 52 , MODE_KIJUNSEN , 1 );         // ЗНАЧЕНИЕ КИДЖУН
 //-------------------------------------------------------------------+
   if (tenkan>kijun)                                               //"ЗОЛОТОЙ КРЕСТ"
   Alert ( "ЗОЛОТОЙ КРЕСТ" );                                       // ОПОВЕЩЕНИЕ
   return ;
  }

존경합니다, 앤드류.

파일:
 
Andrey Ilinykh :

모두를 환영합니다! 저는 EA를 만들 려고 하는 초보자입니다. 작동 원리를 알아보기 위해 간단하게 작성했습니다. 신호 발생 시 경보가 작동하지 않습니다. 오류가 무엇인지 명확하지 않습니다. 내 실수가 무엇인지 알아낼 수 있도록 도와주시겠습니까?

존경합니다, 앤드류.

작동합니다! 테스터에서 확인하고 있습니까?

 
Nikolay Gaylis :

작동합니다! 테스터에서 확인하고 있습니까?

웬일인지 나는 그렇게 생각했다.

아니요, 아직 테스터를 다루지 않았습니다.

EA가 편찬되어 분차트에 올려놓고 따라하고 있습니다. 구름의 색이 바뀌지만 경고 창이 열리지 않습니다. 소프트웨어 버그입니까?

고맙습니다!

 
void Laguerr::  deleteOrders()   //  (int otype)
{
   int k = OrdersTotal ();
   datetime mDateOrderOp; 
   
   
   for ( int i=k- 1 ;i>= 0 ;i--)
   {
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
      {
         if ( OrderSymbol ()==nameSym && OrderMagicNumber ()== Magic && OrderCloseTime ()== 0 )   // && OrderType() == otype)
         {
             if ( OrderType ()== OP_BUYSTOP || OrderType ()== OP_SELLSTOP ) 
            {
               mDateOrderOp = OrderOpenTime ();
               int   mTick = OrderTicket ();
               //if (OrderType()== OP_BUYSTOP) mOpType = OP_SELL;
               bool flag= false ;
               for ( int pos=k- 1 ;pos>= 0 ;pos--)
               {
                   if ( OrderSelect (pos, SELECT_BY_POS , MODE_TRADES ))
                  {
                     if ( OrderSymbol ()==nameSym && OrderMagicNumber ()== Magic && OrderCloseTime ()== 0 )   // && OrderType() == otype)
                     {
                         if ( OrderOpenTime () == mDateOrderOp && ( OrderType ()== OP_BUY || OrderType ()== OP_SELL )  ) 
                        {
                            flag = true ;   
                             break ;
                        } 
                     }
                  }
               }
               if (!flag)
               {
                   if (! OrderDelete (mTick))
                   Print ( "Ошибка delete ордера . Код ошибки=" , GetLastError ()); 
                   break ;
               }
             } 
         }
      }
   }
}
안녕하세요! 상황은 다음과 같습니다. 특정 TP 및 SL로 주문이 개설되었습니다. 그러나 SL이 작동하고 반대 방향으로 첫 번째 주문의 SL 가격으로 두 번째 주문이 열립니다(TP는 첫 번째 주문의 손실 포인트 수와 동일). 2차 SL의 경우 3차 주문은 2차 주문의 SL 값(TP에 해당)과 동일한 가격으로 2차 주문과 반대 방향으로 개설되어야 합니다. 이제 내 코드에서 첫 번째 주문이 TP에 의해 닫히면 두 번째 주문이 삭제됩니다. 질문: 이 세 가지 주문을 여는 계단식을 만드는 방법은 무엇입니까?
 
말해봐, Expert Advisor가 열었던 모든 주문을 기호로 닫는 기능이 올바르게 구현되어 있습니까?
 void OrderCloseAll( double close_price)
{
   for ( int i= OrdersTotal (); i>- 1 ; i--)
      {
         OrderSelect (i, SELECT_BY_POS , MODE_TRADES );
         if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic) OrderClose ( OrderTicket (),lot,close_price,slippage, clrWhite );
      }

}