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

 
Artyom Trishkin :

더 빨리 알고 이해하기

가격을 적어 둡니다. 나중에 가져 오는 방법은 무엇입니까?

 void PriceTimePos( string sy= "" , int op=- 1 , int mn=- 1 )
  {
   double Цены[ 3 ];
   datetime t;
   bool daa;
   int d,k_= OrdersTotal (),typ_;
   double    r= 0 ;
   int       i,k= OrdersHistoryTotal ();

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++)
     {
       if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY ))
        {
         if ( OrderSymbol ()== Symbol ())
           {
             if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL )
              {
               if (op< 0 || OrderType ()==op)
                 {
                   if (mn< 0 || OrderMagicNumber ()==mn)
                    {
                     if ( OrderCloseTime ()>= TimeCurrent ()- 2440 * 60 )
                       {
                        t= OrderCloseTime ();
                        r= OrderOpenPrice ();
                        sl= OrderStopLoss ();
                        tp= OrderTakeProfit ();
                        lot= OrderLots ();
                        typ_= OrderType ();
                         Print ( "OpenPrice" ,r);
                       Цены[0]= OrderOpenPrice ();
                    
                       }
                    }
                 }
              }
           }
        }
     }
//
  }
r 대신 이 주기에 삽입
                        daa= false ;
                         for (i= 0 ; i<k; i++)
                          {
                           if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
                             {
                               if (( OrderSymbol ()==sy || sy== "" ) && (op< 0 || OrderType ()==op))
                                {
                                 if ( OrderType ()> 1 && OrderType ()< 6 )
                                   {
                                    d= MarketInfo ( OrderSymbol (), MODE_DIGITS );
                                    r= NormalizeDouble (r, d);
                                     if (r== NormalizeDouble ( OrderOpenPrice (),d)) daa= true ; 
                                   }
                                }
                             }
                          }
 

안녕하세요! 이전 주문이 네거티브로 마감된 후 손절매 를 증가시켜야 하는 기능을 만들었습니다.

최대값에 도달할 때까지 설정된 단계만큼 증가합니다. 결과적으로 항상 원래 손절매 값을 설정합니다.

뭐가 문제 야? 고맙습니다!

//+----------------------------------------------- --------------------+

더블 SL()

{

더블 SL;

if(OrdersHistoryTotal()==0)

{

sL=손절매;

}

if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))

{

if(OrderProfit()>=0)

{

sL=손절매;

}

if(OrderProfit()<0 && OrderType()==OP_BUY)

{

sL=OrderOpenPrice()-OrderStopLoss()+SLStep;

}

if(OrderProfit()<0 && OrderType()==OP_SELL)

{

sL=OrderStopLoss()-OrderOpenPrice()+SLStep;

}

}

if(sL>maxStep)

{

sL=손절매;

}

반환(sL);

}

//+----------------------------------------------- --------------------+

 
Artyom Trishkin :
  1. void가 아닌 함수에서 값을 올바르게 반환하지만 여전히 새 레일로 전환하는 것이 좋습니다. 거기에는 복잡한 것이 없습니다.
  2. 작성, 코드 맨 처음에 #property strict 지시문을 삽입하는 것을 잊지 마십시오. 모든 지시문이 작성되고 오류 코드를 읽으십시오. 해당 설명은 설명서에 있으며 모든 것이 잘되고 어렵지 않습니다.
오류 코드 는 어디에서 찾을 수 있습니까? 이 문서는 어디에 있습니까?
 
#property strict

int Count= 0 ;

void OnInit ()     
{
   Alert ( "Сработала ф-ия init() при запуске" );   // Сообщение
   return ;                                                                     // Выход из init()
   }   
//--------------------------------------------------------------------
void OnStart ()                                                                       // Спец. ф-ия start()
   {
   double Price = Bid ;                                                       // Локальная перемен.
   Count++;                                                                       // Счётчик тиков
   Alert ( "Новый тик " ,Count, " Цена = " ,Price);       // Сообщение
   return ;                                                                         // Выход из start()
   }
void OnDeinit ()                                                                               // Спец. ф-ия deinit()
   {
   Alert ( "Сработала ф-ия deinit() при выгрузке" );         // Сообщение
   return ;                                                                                 // Выход из deinit()
   }

내가 뭘 잘못 쓰고 있니?

다음과 같아야 합니다. http://prntscr.com/lu1kb9


현재 템플릿 아래에 데이터를 삽입하려고 했습니다.

 //+------------------------------------------------------------------+
//|                                                            п.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 initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {

   Alert ( "Сработала ф-ия init() при запуске" );   // Сообщение
                                                                       // Выход из init()
     
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
Alert ( "Сработала ф-ия deinit() при выгрузке" );         // Сообщение
   return ;
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
 
   double Price = PRICE_OPEN ;                                                       // Локальная перемен.
   Count++;                                                                       // Счётчик тиков
   Alert ( "Новый тик " ,Count, " Цена = " ,Price);       // Сообщение
   return ;                                                                         // Выход из start()
   
   
  }
//+------------------------------------------------------------------+


그러나 그것은 여전히 동일하지 않습니다. 돕다
Скриншот
Скриншот
  • prnt.sc
Снято с помощью Lightshot
 
제발 도와주세요, 최대 드로다운을 계산하기 위해 배열을 전달할 수 있는 함수가 있는 사람이 있습니까?
 

안녕하세요.

나는 Sergey Kovalev의 교과서에 따라 MC-El을 마스터하고 있습니다.

거기에서 고문을 데려 와서 컴파일했는데 작동하는 것 같지만 컴파일 할 때 오류가 아닌 경고가 아닌 몇 가지 주석을 제공합니다.

주석 없이 컴파일하려면 무엇을 변경해야 합니까? 미리 감사드립니다.

파일:
expert.mq4  28 kb
 
Sergey Branin :
오류 코드 는 어디에서 찾을 수 있습니까? 이 문서는 어디에 있습니까?

이 사이트의 메뉴에서 - 찾아보기

 
Artyom Trishkin :

이 사이트의 메뉴에서 - 찾아보기

Artyom, mql5에 대한 문서가 있고 mql4 섹션에 질문이 있습니다.

세르게이 브라닌 :
오류 코드 는 어디에서 찾을 수 있습니까? 이 문서는 어디에 있습니까?

다음은 mql4 문서 입니다. 그리고 MetaEditor`에서 F1을 누르는 것이 좋습니다.

Справочник MQL4
Справочник MQL4
  • docs.mql4.com
MetaQuotes Language 4 (MQL4) - встроенный язык программирования торговых стратегий, разработанный компанией MetaQuotes Software Corp. на основе своего многолетнего опыта в создании торгово-информационных платформ. Этот язык позволяет писать собственные программы-эксперты (Expert Advisors), автоматизирующие управление торговыми процессами и...
 
Alexey Viktorov :

Artyom, mql5에 대한 문서가 있습니까? mql4 섹션의 질문

다음은 mql4 문서 입니다. 그리고 MetaEditor`에서 F1을 누르는 것이 좋습니다.

아... 음, 어쨌든 - 그것도 전혀 어렵지 않습니다 - 포럼에서 답변을 하루 기다리는 것보다 F1 키를 누르고 필요한 모든 것을 찾는 것이 더 빠릅니다. 난 이해가 안 돼요 ..

 
안녕하세요 프로그래밍 초보입니다. 어디에서도 코드를 찾을 수 없습니다. 아이디어는 이것입니다. 어드바이저에서 사용자 지정 표시기 를 관리하거나 일부 이벤트가 발생할 때 외부 매개변수(하나)를 변경해야 합니다. 간단히 말해서 논리 - 로트(또는 예를 들어, 위치 수) > 지정된 값인 경우 표시기( 다른 창 에 있고 이 EA와 연결되지 않음)에서 외부 설정이 변경됩니다. 칠면조를 다시 초기화하지 않고 비행하십시오. 어쩌면 당신은 시도 할 수 있습니다
 string ServiceCustomIndicatorByIndexA( int nIndex);// я даже не знаю тут   ANSI или UNICODE нужно
и
int ServiceGetNamesIndicatorsMA( int hwndChart, int nWindow, string &asIndicators[], int nSize);   
하지만 구현 방법을 모르겠습니다. 아마도 프로그래머 중 한 명이 예제를 위해 간단한 코드 블록을 작성할 것입니다. c/a 데니스