Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1380

 

Mevcut çubuğun kendi zamanı ile bir indeksi varsa, bu kombinasyonun asla değişmeyeceğini varsayıyorum.
Veya takas geçmişinin bir sonucu olarak, bu indeksin bazı tarihsel çubuklara atanması ve mevcut çubuğun, değiştirilen çubukların sayısı kadar büyük olan yeni bir dizin alması mümkün mü?

Başka bir deyişle aynı:
Mevcut çubuğun (endeks, fiyat ve zaman) ancak geçmiş tamamen yüklendikten sonra kullanılabilir hale geldiğini ve parametrelerinin gelecekte asla değişmediğini anlamak doğru mu?

 

Lütfen bana MySQL tablo tablosundaki satır sayısını nasıl alacağımı söyleyin

 //--- Выставленные позиции
struct PositionFib
  {
   int                ID;             // Индификатор
   int                ur;             // Уровень
   int                per;           // Период
   int                type;           // Тип ордера
   double             price;         // Цена Открытия
   double             priceTP;       // Цена Профита
   double             priceSL;       // Цена Стопа
   double             lot;           // Лот
   datetime           time;           // Время
   string             key;           // Ключ
  } position_buff[];
 //--- заблокируем базу данных перед выполнением транзакций
   DatabaseTransactionBegin (database);
   int request= DatabasePrepare (database, "SELECT COUNT(*) FROM POSITION" );
   DatabaseReadBind (request, person)
   id=person.ID;
  

Bir hata döndürür

Görev son kimliği almaktır

Ben de bu şekilde deniyorum satır sayısını alamıyorum

 int request= DatabasePrepare (database, "SELECT COUNT(*) FROM POSITION" );
   id= DatabaseRead (request);
 

Sorun ne, neden istekten değeri alamıyorum?

 //--- открываем/создаем базу данных в общей папке терминалов
   int database= DatabaseOpen (filename+ ".sqlite" , DATABASE_OPEN_READWRITE | DATABASE_OPEN_CREATE | DATABASE_OPEN_COMMON );
   if (database== INVALID_HANDLE )
     {
       Print ( "SaveStats: " , filename, " открываем/создаем базу данных в общей папке терминалов " , GetLastError ());
       return ;
     }

//--- заблокируем базу данных перед выполнением транзакций
   DatabaseTransactionBegin (database);
   int request= DatabasePrepare (database, "SELECT COUNT(*) FROM POSITION" );
   int id= DatabaseRead (request);

İsteği veritabanına karşı kontrol edersem, olduğu gibi döner



Aynen öyle

 int id= DatabaseRead (request);

Veritabanı bool ve id int


İsteğin sonucu nasıl çıkarılır ???


Her şey yolunda gitti. ek bir sql sınıfı oluşturdu

 //--- заблокируем базу данных перед выполнением транзакций
   DatabaseTransactionBegin (database);
   int request= DatabasePrepare (database, "SELECT COUNT(*) FROM POSITION" );
   DatabaseReadBind (request,sql);
 

Göstergenin yükü kaldırıldığı andan itibaren DeInit'e yapılan çağrıya kadar birkaç saniye geçer.

Duraklama neden oluşur ve bundan kaçınılabilir mi?

 
Her tik için bir emir açılır. Sadece bir tanesi açılacak şekilde nasıl düzeltebilirim?

Belgelerden alınan bu bloğu kullanıyorum (tp ve sl eklendi)

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

void Open_order_BUY()

  {

    double bid = SymbolInfoDouble(Symbol(),SYMBOL_BID),

      ask = SymbolInfoDouble(Symbol(),SYMBOL_ASK);

    //--- объявление и инициализация запроса и результата

   MqlTradeRequest request={};

   MqlTradeResult  result={};

//--- параметры запроса

   request.action   =TRADE_ACTION_DEAL;                     // тип торговой операции

   request.symbol   =Symbol();                              // символ

   request.volume   =0.01;                                   // объем в 0.1 лот

   request.type     =ORDER_TYPE_BUY;                        // тип ордера

   request.price    =SymbolInfoDouble(Symbol(),SYMBOL_ASK); // цена для открытия

   request.sl       =bid-SL*SymbolInfoDouble(Symbol(),SYMBOL_POINT);                                   // SL

   request.tp       =ask+TP*SymbolInfoDouble(Symbol(),SYMBOL_POINT);                                   // TP

   request.deviation=5;                                     // допустимое отклонение от цены

   request.magic    =EXPERT_MAGIC;                          // MagicNumber ордера

//--- отправка запроса

   if(!OrderSend(request,result))

       PrintFormat("OrderSend error %d",GetLastError());     // если отправить запрос не удалось, вывести код ошибки

//--- информация об операции

   PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);

  }

  

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

void Open_order_SELL()

  {

  

    double bid = SymbolInfoDouble(Symbol(),SYMBOL_BID),

      ask = SymbolInfoDouble(Symbol(),SYMBOL_ASK);

//--- объявление и инициализация запроса и результата

   MqlTradeRequest request={};

   MqlTradeResult  result={};

//--- параметры запроса

   request.action   =TRADE_ACTION_DEAL;                     // тип торговой операции

   request.symbol   =Symbol();                              // символ

   request.volume   =0.01;                                   // объем в 0.2 лот

   request.type     =ORDER_TYPE_SELL;                       // тип ордера

   request.price    =SymbolInfoDouble(Symbol(),SYMBOL_BID); // цена для открытия

   request.sl       =ask+SL*SymbolInfoDouble(Symbol(),SYMBOL_POINT);                                   // SL

   request.tp       =bid-TP*SymbolInfoDouble(Symbol(),SYMBOL_POINT);                                   // TP

   request.deviation=5;                                     // допустимое отклонение от цены

   request.magic    =EXPERT_MAGIC;                          // MagicNumber ордера

//--- отправка запроса

   if(!OrderSend(request,result))

      PrintFormat("OrderSend error %d",GetLastError());     // если отправить запрос не удалось, вывести код ошибки

//--- информация об операции

   PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);

  }


 
Ivan Butko # :
Her tik için bir emir açılır. Sadece bir tanesi açılacak şekilde nasıl düzeltebilirim?

Belgelerden alınan bu bloğu kullanıyorum (tp ve sl eklendi)

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

void Open_order_BUY()

  {

    double bid = SymbolInfoDouble(Symbol(),SYMBOL_BID),

      ask = SymbolInfoDouble(Symbol(),SYMBOL_ASK);

    //--- объявление и инициализация запроса и результата

   MqlTradeRequest request={};

   MqlTradeResult  result={};

//--- параметры запроса

   request.action   =TRADE_ACTION_DEAL;                     // тип торговой операции

   request.symbol   =Symbol();                              // символ

   request.volume   =0.01;                                   // объем в 0.1 лот

   request.type     =ORDER_TYPE_BUY;                        // тип ордера

   request.price    =SymbolInfoDouble(Symbol(),SYMBOL_ASK); // цена для открытия

   request.sl       =bid-SL*SymbolInfoDouble(Symbol(),SYMBOL_POINT);                                   // SL

   request.tp       =ask+TP*SymbolInfoDouble(Symbol(),SYMBOL_POINT);                                   // TP

   request.deviation=5;                                     // допустимое отклонение от цены

   request.magic    =EXPERT_MAGIC;                          // MagicNumber ордера

//--- отправка запроса

   if(!OrderSend(request,result))

       PrintFormat("OrderSend error %d",GetLastError());     // если отправить запрос не удалось, вывести код ошибки

//--- информация об операции

   PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);

  }

  

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

void Open_order_SELL()

  {

  

    double bid = SymbolInfoDouble(Symbol(),SYMBOL_BID),

      ask = SymbolInfoDouble(Symbol(),SYMBOL_ASK);

//--- объявление и инициализация запроса и результата

   MqlTradeRequest request={};

   MqlTradeResult  result={};

//--- параметры запроса

   request.action   =TRADE_ACTION_DEAL;                     // тип торговой операции

   request.symbol   =Symbol();                              // символ

   request.volume   =0.01;                                   // объем в 0.2 лот

   request.type     =ORDER_TYPE_SELL;                       // тип ордера

   request.price    =SymbolInfoDouble(Symbol(),SYMBOL_BID); // цена для открытия

   request.sl       =ask+SL*SymbolInfoDouble(Symbol(),SYMBOL_POINT);                                   // SL

   request.tp       =bid-TP*SymbolInfoDouble(Symbol(),SYMBOL_POINT);                                   // TP

   request.deviation=5;                                     // допустимое отклонение от цены

   request.magic    =EXPERT_MAGIC;                          // MagicNumber ордера

//--- отправка запроса

   if(!OrderSend(request,result))

      PrintFormat("OrderSend error %d",GetLastError());     // если отправить запрос не удалось, вывести код ошибки

//--- информация об операции

   PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);

  }


Karar verildi.

 

Çizgiyi sağa nasıl uzatabilirim? Mevcut çubuğun ötesinde.

Zaman ve fiyat koordinatları var. Fiyat belli ama zamanı nasıl ayarlayacağımı (iTime(Symbol(), PERIOD_CURRENT, 0) deniyorum ama indeksi sıfır)

 
Ivan Butko # :

Çizgiyi sağa nasıl uzatabilirim? Mevcut çubuğun ötesinde.

Zaman ve fiyat koordinatları var. Fiyat belli ama zamanı nasıl ayarlayacağımı (iTime(Symbol(), PERIOD_CURRENT, 0) deniyorum ama indeksi sıfır)

 iTime ( Symbol (), PERIOD_CURRENT , 0 ) + PeriodSeconds ()*5 // 5 баров
 

Tünaydın.

Bunun gibi bir soru:

DRAW_FILLING çizim stiliyle bölgeleri çizen bir gösterge yazıyorum. Grafikte, çizilen bölgelere ek olarak, birçok hareketli ortalama dahil olmak üzere birkaç gösterge daha var. Çizilen bölge üst üste bindirildiğinde, diğer göstergelerin çizgileri renkleri çarpıcı biçimde değiştirir.

Soru: MT5'te bölgeleri, renkleri üst üste gelmeyecek ve diğer göstergelerin çizgilerinin rengini değiştirmeyecek şekilde çizmek mümkün müdür?

PS Gösterge arabelleklerinin tüm görüntüleme özelliklerini çıkardım ( PlotIndexSetInteger gibi yöntemler), benzer bir şey yok.

Not 2. Ekli, MT5'ten bir ekran görüntüsüdür.

Dosyalar:
u68ufb.PNG  49 kb
 
satorifx # :

Tünaydın.

Bunun gibi bir soru:

DRAW_FILLING çizim stiliyle bölgeleri çizen bir gösterge yazıyorum. Grafikte, çizilen bölgelere ek olarak, birçok hareketli ortalama dahil olmak üzere birkaç gösterge daha var. Çizilen bölge üst üste bindirildiğinde, diğer göstergelerin çizgileri renkleri önemli ölçüde değiştirir.

Soru: MT5'te bölgeleri, renkleri üst üste gelmeyecek ve diğer göstergelerin çizgilerinin rengini değiştirmeyecek şekilde çizmek mümkün müdür?

PS Gösterge arabelleklerinin tüm görüntüleme özelliklerini çıkardım ( PlotIndexSetInteger gibi yöntemler), benzer bir şey yok.

Not 2. Ekli, MT5'ten bir ekran görüntüsüdür.

Her şey bindirmenin sırasına bağlı, en son kim öndeyse

Önce DRAW_FILLING ile arabelleği tanımlayın

Neden: