위대하고 끔찍한 MT4 영원히 (또는 전환 전략을 올바르게 개발하는 방법) - 페이지 18

 
PapaYozh :
아니요.
결과는 보장되지 않습니다.

동전이 충분하다면 보장됩니다.

 
fxsaber :

빈 계정에 100개의 위치를 여는 스크립트를 MT5에 작성해야 합니다.


MT4에서는 이렇게 결정했습니다.


누가 MT5에 어떤 솔루션을 가지고 있습니까?

부분실행이 가능한가요?
 
SanAlex :

동전이 충분하다면 보장됩니다.

부분 실행을 고려하지 않았으며 이를 고려할 때 이중 실행도 고려해야 합니다.

 
Alexey Viktorov :
부분실행이 가능한가요?

부분 실행이 없다고 가정합니다. 그러나 스크립트가 실행되는 동안 누군가 실수로 포지션 테이블의 십자가를 클릭하여 그 중 하나/여러 개를 닫을 수 있습니다. 그러나 스크립트 실행이 끝날 때 정확히 100개의 위치가 있어야 합니다.


MT4 옵션 은 매우 간단합니다. 그것이 내가 이 스레드에 쓴 이유입니다.

 
fxsaber :

누가 MT5에 어떤 솔루션을 가지고 있습니까?

싱크로나이저가 없습니다.

그 과정에서 기본적인 재견적 또는 연결 끊김이 있을 수 있습니다. 100개의 주문이 항상 100개의 거래를 제공하는 것은 아닙니다.

 
Andrey Khatimlianskii :

싱크로나이저가 없습니다.

그 과정에서 기본적인 재견적 또는 연결 끊김이 있을 수 있습니다. 100개의 주문이 항상 100개의 거래를 제공하는 것은 아닙니다.

동기화 장치는 PositionsTotal 및 OrdersTotal 값이 거짓말을 하지 않는지 확인합니다. 짧은 시간 동안 거짓말을 해서 2배를 얻는다는 사실 때문이다.

기본적으로 싱크로나이저는 한 줄입니다. 그리고 장치에 올라가지 않으면 응용 프로그램이 간단합니다.


그러나 동기화 장치를 사용하더라도 모든 것이 매우 중요하지 않습니다. 다음 조건을 사용할 수 있습니다.

 while ( OrdersTotal () + PositionsTotal < 100 )

그러나 누군가가 다음을 수행한다면 이 조건은 완전히 엉망이 될 것입니다.

fxsaber :

부분 실행이 없다고 가정합니다. 그러나 스크립트가 실행되는 동안 누군가 실수로 포지션 테이블의 십자가를 클릭하여 그 중 하나/여러 개를 닫을 수 있습니다. 그러나 스크립트 실행이 끝날 때 정확히 100개의 위치가 있어야 합니다.


저것들. MT4에서는 두 줄로 풀 수 있는 기본 작업이 MT5에서는 쉽게 해결되지 않습니다. 따라서 MT4 스타일 + 동기화 장치는 MT5에서 규칙을 따릅니다. 이 때문에 동일한 Market에 많은 Expert Advisors가 있는 MT5에서 어떻게 Expert Advisors가 다르게 작성되는지 잘 모르겠습니다.

 
fxsaber :

동기화 장치는 PositionsTotal 및 OrdersTotal 값이 거짓말을 하지 않는지 확인합니다. 짧은 시간 동안 거짓말을 해서 2배를 얻는다는 사실 때문이다.

기본적으로 싱크로나이저는 한 줄입니다. 그리고 장치에 올라가지 않으면 응용 프로그램이 간단합니다.


그러나 동기화 장치를 사용하더라도 모든 것이 매우 중요하지 않습니다. 다음 조건을 사용할 수 있습니다.

그러나 누군가가 다음을 수행한다면 이 조건은 완전히 엉망이 될 것입니다.


저것들. MT4에서는 두 줄로 풀 수 있는 기본 작업이 MT5에서는 쉽게 해결되지 않습니다. 따라서 MT4 스타일 + 동기화 장치는 MT5에서 규칙을 따릅니다. 이 때문에 동일한 Market에 많은 Expert Advisors가 있는 MT5에서 어떻게 Expert Advisors가 다르게 작성되는지 잘 모르겠습니다.

MT5에서는 모든 것이 MT4에서와 같은 방식으로 해결되며 언어와 API가 훨씬 풍부하기 때문에 훨씬 더 쉽습니다. 보다 정확하게는 언어가 거의 동일합니다. 여기서 Metaquotes는 호환성을 위해 훌륭한 작업을 수행했지만 API는 상당히 다릅니다. Renat(Metaquotes 이사)는 포럼에서 MT4가 죽었고 개발되지 않을 것이라고 말한 적이 있습니다. 그러나 분명히 상업적 이익이 더 중요한 것으로 판명되었지만 아직 업데이트가 나오고 있습니다. 하지만 대부분은 MKL 5의 버그 수정 및 새로운 기능입니다. 그래서 개발자는 훌륭합니다. 나는 모자를 벗습니다. 나는 가지고 있지 않습니다.))

그러나 일반적으로 MKL5로 전환하는 것이 얼마나 어려운지 일부 동지들의 신음 소리를 이해하지 못합니다. 예, 거기에는 어려움이 없습니다. 글쎄, 다른 API가 있으므로 자세한 소스가 있으므로 연구하는 것을 선호합니다. 아직 지식이 부족하신 분들은 환영합니다. 간략하지만 명확하게 작성되었습니다. 어쨌든 5는 4보다 10배 이상 빠르며 최적화 모드 에서는 일반적으로 사용자가 허용하는 모든 프로세서 코어를 사용하며 최신 비디오 카드를 사용하면 400배를 능가합니다. 그러니 슬픈 노래를 쓰지 마세요. ))

 
Andrei Trukhanovich :

부분 실행을 고려하지 않았으며 이를 고려할 때 이중 실행도 고려해야 합니다.

그것도 잘못된거야? - 누가 이 기능에서 무엇을 원하는지 이해하지 못하지만 100% 작동합니다!!!

 //+------------------------------------------------------------------+
//|                                                    maxLimits.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property script_show_inputs
#include <Trade\Trade.mqh>
//---
CTrade m_trade; // trading object
//---
sinput uint    maxLimits = 3 ;     // Кол-во Позиции Открыть в одну сторону
sinput double InpLots   = 0.01 ; // Lots
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   const string symbol= NULL ;
   double price= 0.0 ;
   const double sl= 0.0 ;
   const double tp= 0.0 ;
   const string comment= "" ;
//--- check symbol
   string symbol_name=(symbol== NULL ) ? Symbol () : symbol;
//--- check price
   if (price== 0.0 )
      price= SymbolInfoDouble (symbol_name, SYMBOL_ASK );
//---
   for ( uint i= 0 ; i<maxLimits; i++)
     {
       //--- open position
       if (m_trade.PositionOpen( Symbol (), ORDER_TYPE_BUY ,InpLots,price,sl,tp))
         printf ( "Position by %s to be opened" , Symbol ());
       else
        {
         printf ( "Error opening BUY position by %s : '%s'" , Symbol (),m_trade.ResultComment());
         printf ( "Open parameters : price=%f,SL=%f,TP=%f" ,price,sl,tp);
        }
     }
  }
//+------------------------------------------------------------------+
//---
   for ( uint i= 0 ; i<maxLimits; i++)
     {
       //--- open position
       if (m_trade.Buy(InpLots,symbol_name,price,sl,tp,comment))
       //if(m_trade.PositionOpen(Symbol(),ORDER_TYPE_BUY,InpLots,price,sl,tp))
         printf ( "Position by %s to be opened" , Symbol ());
       else
        {
         printf ( "Error opening BUY position by %s : '%s'" , Symbol (),m_trade.ResultComment());
         printf ( "Open parameters : price=%f,SL=%f,TP=%f" ,price,sl,tp);
        }
     }
 
fxsaber :

부분 실행이 없다고 가정합니다. 그러나 스크립트가 실행되는 동안 누군가 실수로 포지션 테이블의 십자가를 클릭하여 그 중 하나/여러 개를 닫을 수 있습니다. 그러나 스크립트 실행이 끝날 때 정확히 100개의 위치가 있어야 합니다.


MT4 옵션은 매우 간단합니다. 그것이 내가 이 스레드에 쓴 이유입니다.

즉, MQL5의 경우 누군가가 장난을 칠 수 있지만 MQL4는 할 수 없는 조건을 설정했습니까? 그리고 다른 컴퓨터에서 계정에 연결하고 몇 가지 예치금을 설정하면... MQL4는 무엇을 열까요???

수표없이 속이고 싶습니까? 당신은 프로그래밍에서 관대함을 위해 캠페인을 벌이고 있습니까, 아니면 누군가의 이기적인 이익을 위해 MQL5를 더 저주하려고 합니까?

검사와 실수 방지를 사용하여 mql4에서 모두 동일하게 작성하십시오.

 
Alexey Viktorov :

즉, MQL5의 경우 누군가가 장난을 칠 수 있지만 MQL4는 할 수 없는 조건을 설정했습니까? 그리고 다른 컴퓨터에서 계정에 연결하고 몇 가지 예치금을 설정하면... MQL4는 무엇을 열까요???

MT4와 MT5의 조건은 동일합니다.

수표없이 속이고 싶습니까? 당신은 프로그래밍에서 관대함을 위해 캠페인을 벌이고 있습니까, 아니면 누군가의 이기적인 이익을 위해 MQL5를 더 저주하려고 합니까?

검사와 실수 방지를 사용하여 mql4에서 모두 동일하게 작성하십시오.

나는 모든 것을 MT5에서만 한다. MT5가 MT4보다 어렵지 않다는 말도 안됩니다. 훨씬 더 어렵습니다! 이번 주에만 두 자리를 두는 결정이 있었고, 100% 작동한다는 것은 사실이 아닙니다.

수년 동안 모두가 배가, 오는 것에 대해 알고 있었습니다... . 매우 어렵기 때문입니다. 포럼에서 제기된 거래 API의 많은 기능은 개발자가 알지 못하거나 의견을 제시하지 않았습니다.


아무도 MT5를 싫어하지 않습니다. 그는 초등 문제를 풀 때 몇 가지 문제의 예를 보여주었습니다.

사유: