Hatalar, hatalar, sorular - sayfa 2100

 
Slava :

Senkronize bir komut ile asenkron bir komut arasındaki farkı hissettiniz.

Eşzamansız işlevlerin bir listesini verebilir misiniz?

Doğru anlarsam, Nesne ve Grafik işlevlerinin (başka ne?) tümü eşzamansızdır. Öyleyse ChartGet'in neden ChartXY'den daha hızlı olduğu tam olarak açık değil mi?

 
Slava :

Senkronize bir komut ile asenkron bir komut arasındaki farkı hissettiniz.

Evet...
Ancak gözlemler, bu işlevlerin eşzamansızlıklarında oldukça eşzamanlı olduğunu göstermektedir. :)
Pekala, soruyu geliştiricilere farklı bir şekilde formüle edeceğim: Bu asenkron fonksiyonları senkronize fonksiyonlara dönüştürmek için bir fırsat (veya arzu) var mı?
 
fxsaber :

Eşzamansız işlevlerin bir listesini verebilir misiniz?

Doğru anlarsam, Nesne ve Grafik işlevlerinin (başka ne?) tümü eşzamansızdır. Öyleyse ChartGet'in neden ChartXY'den daha hızlı olduğu tam olarak açık değil mi?

Ayrıca çok yavaşlar, sadece "hızlı" algoritmamın özü, grafik işlevlerini kullanmama ve onlarsız yapma olasılığını hesaplamaktır. Ve örneğimdeki grafiği fare ile "yakaladığınızda" ve sola - sağa hareket ettirmeye başladığınızda, olayın meydana gelmesi nedeniyle grafik işlevlerinin uygulanmaya başlaması nedeniyle tüm hız kaybolur.
 CHARTEVENT_CHART_CHANGE
 

Merhaba! https://www.mql5.com/en/articles/100 adresinden MQL5 öğrenmeye başladım. Kodu çalıştırdım, 4756 hatası aldım, belgelere baktım - daha kolay olmadı. Tamam, basit bir taneyle başlamayı düşündüm (Uyarı/Yazdır...). En önemli işlevlerden biri OrderSend'dir. OrderSend'in nasıl kullanılacağına ilişkin forum\belgeleri aramaya başladım. Satın alma pozisyonu açmak için bir kod gördüğüm https://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions bu makaleye rastladım. 4756 hatası alındı ve 10030 retcode kodu alındı. 10030 - bunun OrderSend özelliği olduğunu fark ettim, ancak bu özelliğin nasıl kullanılacağını anlamadım (başka birinin koduna baktım) ve en önemlisi ne için olduğunu. Sonra https://www.mql5.com/ru/docs/trading/ordersend dosyasını açtım, kodu kopyaladım, çalıştırdım, her şey yolundaydı, çalıştı.
Ancak 4756 hatasının neden ortaya çıktığını ve 10030'un yanı sıra ondan nasıl kurtulacağını hala anlamıyorum.

Aradaki koda baktım

 void OnTick (){
       //--- объявление и инициализация запроса и результата
       MqlTradeRequest request={ 0 };
       MqlTradeResult   result={ 0 };
       //--- параметры запроса
      request.action   = TRADE_ACTION_DEAL ;                     // тип торговой операции
      request.symbol   = Symbol ();                               // символ
      request.volume   = 0.1 ;                                   // объем в 0.1 лот
      request.type     = ORDER_TYPE_BUY ;                         // тип ордера
      request.price    = SymbolInfoDouble ( Symbol (), SYMBOL_ASK ); // цена для открытия
      request.deviation= 5 ;                                     // допустимое отклонение от цены
      request.magic    =EXPERT_MAGIC;                           // MagicNumber ордера
       //--- отправка запроса
       if (! OrderSend (request,result))
         PrintFormat ( "OrderSend error %d" , GetLastError ());     // если отправить запрос не удалось, вывести код ошибки
         Alert ( GetLastError ());
       //--- информация об операции
       PrintFormat ( "retcode=%u  deal=%I64u  order=%I64u" ,result.retcode,result.deal,result.order);
   }

ve bu

 uint SendRandomPendingOrder( long const magic_number) 
  { 
//--- готовим запрос 
   MqlTradeRequest request={ 0 }; 
   request.action= TRADE_ACTION_PENDING ;         // установка отложенного ордера 
   request.magic=magic_number;                   // ORDER_MAGIC 
   request.symbol= _Symbol ;                       // инструмент 
   request.volume= 0.1 ;                           // объем в 0.1 лот 
   request.sl= 0 ;                                 // Stop Loss не указан 
   request.tp= 0 ;                                 // Take Profit не указан    
//--- сформируем тип ордера 
   request.type=GetRandomType();                 // тип ордера 
//---сформируем цену для отложенного ордера 
   request.price=GetRandomPrice(request.type);   // цена для открытия 
//--- отправим торговый приказ 
   MqlTradeResult result={ 0 }; 
   OrderSend (request,result); 
//--- выведем в лог ответ сервера   
   Print ( __FUNCTION__ , ":" ,result.comment); 
   if (result.retcode== 10016 ) Print (result.bid,result.ask,result.price); 
//--- вернем код ответа торгового сервера 
   return result.retcode; 
  } 

Bence neredeyse aynılar, bu hataların ortaya çıktığı yerleri göremiyorum (4756 ve 10030). Parmağınızı gösterin ve açıklayın lütfen

 
damirqa :

Merhaba! https://www.mql5.com/ru/articles/100 adresinden MQL5 öğrenmeye başladım. Kodu çalıştırdım, 4756 hatası aldım, belgelere baktım - daha kolay olmadı. Tamam, basit bir taneyle başlamayı düşündüm (Uyarı/Yazdır...). En önemli işlevlerden biri OrderSend'dir. OrderSend'in nasıl kullanılacağına ilişkin forum\belgeleri aramaya başladım. Satın alma pozisyonu açmak için bir kod gördüğüm https://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions bu makaleye rastladım. 4756 hatası alındı ve 10030 retcode kodu alındı. 10030 - bunun OrderSend özelliği olduğunu fark ettim, ancak bu özelliğin nasıl kullanılacağını anlamadım (başka birinin koduna baktım) ve en önemlisi ne için olduğunu. Sonra https://www.mql5.com/ru/docs/trading/ordersend dosyasını açtım, kodu kopyaladım, çalıştırdım, her şey yolundaydı, çalıştı.
Ancak 4756 hatasının neden ortaya çıktığını ve 10030'un yanı sıra ondan nasıl kurtulacağını hala anlamıyorum.

Aradaki koda baktım

ve bu

Bence neredeyse aynılar, bu hataların ortaya çıktığı yerleri göremiyorum (4756 ve 10030). Parmağınızı gösterin ve açıklayın lütfen


CTrade ticaret sınıfını kullanın - bu şekilde minimum hata yapmanız garanti edilir.

Bir Alım açmak için bir takas talebi gönderme örneği:

 //+------------------------------------------------------------------+
//|                                                     Open Buy.mq5 |
//|                              Copyright © 2018, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2018, Vladimir Karputov"
#property link        "http://wmua.ru/slesar/"
#property version    "1.000"
//---
#include <Trade\Trade.mqh>
CTrade         m_trade;                       // trading object
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   m_trade.Buy( 1.0 ); // open Buy position, volume 1.0 lot
  }
//+------------------------------------------------------------------+
Dosyalar:
Open_Buy.mq5  2 kb
 
Vladimir Karputov :

CTrade ticaret sınıfını kullanın - bu şekilde minimum hata yapmanız garanti edilir.

Bir Alım açmak için bir takas talebi gönderme örneği:


CTrade - genel bir sınıf mı? Yani, başka bir kodu değiştirmeleri mümkün mü?

 
damirqa :

CTrade - genel bir sınıf mı? Yani, başka bir kodu değiştirmeleri mümkün mü?


CTrade , Standard Library -> Trade Classes -> CTrade içinde bir terminal ile birlikte gelir.

 
damirqa :

Bence neredeyse aynılar, bu hataların ortaya çıktığı yerleri göremiyorum (4756 ve 10030). Parmağınızı gösterin ve açıklayın lütfen

https://www.mql5.com/en/search#!keyword=Desteklenmeyen%20filling%20mode

Поиск - MQL5.community
Поиск - MQL5.community
  • www.mql5.com
Поиск выполняется с учетом морфологии и без учета регистра. Все буквы, независимо от того, как они введены, будут рассматриваться как строчные. По умолчанию наш поиск показывает страницы...
 

Kod tabanından örnek


ME'de kod almanın birkaç yolu vardır

  1. Doğrudan ME'den indirin. Belki birileri için uygundur. Ama bana göre, hiç değil.
  2. Dosyayı diske yükleyin, bir MQL5 klasörüne kopyalayın ve ME'de açın. Çoğu zaman bu uygunsuz yöntemi kullanırım.
  3. "Görüntüle" düğmesine basın ve kopyala-yapıştır yoluyla (kopyala - CTRL + A ve CTRL + C) kodu ME'ye (CTRL + V) bırakın. En hızlı ve en uygun yol.
Ekran görüntüsünde gösterildiği gibi bir "kopyala" düğmesi yapılması tavsiye edilir mi?

 

MT5 test cihazında "Düzenleme alanı" OBJ_EDIT nesnesi, içerdiği değerin düzenlenmesine izin vermiyor. Bu tasarımdan mı yoksa bir hata mı?

Terminallerde ve test cihazında MT4 düzenlenir, ancak test cihazında MT5 istemez , nesneyi oluştururken programlı olarak girilen değer tamamen kaybolur.

Neden: