Hatalar, hatalar, sorular - sayfa 3163

 
Roman # :

Forex'te Son fiyat yoktur.
Böyle bir karışıklık, sanırım))

Ve çözüm şudur.
Grafik görüntüsünün tüm özelliklerini istediğiniz gibi ayarlayın ve şablona default.tpl olarak kaydedin.

nasıl yapılır?

Son fiyatın bu satırının neden eklendiğini hiç anlamıyorum, pratik anlamda hiçbir anlamı yok.

 
user4321 # :

nasıl yapılır?

Grafikte RMB -> Şablonlar -> Şablonu Kaydet
Dosya adı: default.tpl

 
Bazı durumlarda (bir kalıp bulamadı), kullanılmayan beyan edilmiş bir değişkenle kod derlerken, MetaEditor5 kullanılmama konusunda uyarmaz.
 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma

MrBrooklin , 2022.02.25 07:15

Günaydın sevgili uzmanlar!

Bugün benim için anlaşılmaz olan, ancak zaten tamamen MQL5 referansından alınan kodda bulunan iki an ile daha karşılaştım. Bu sefer hiçbir şey yazmadı, sadece hazır bir örnek aldı.

MQL5 Referans / Sabitler, Numaralandırmalar ve Yapılar / Veri Yapıları / Ticaret Talep Yapısını açıyorum. Orada buldum:

Ticaret talebi yapısı
 Modify Pending Order
Торговый приказ на модификацию уровней цен отложенного ордера. Требуется указание 7 полей:
    action
    order
    price
    sl
    tp
    type_time
    expiration
 Пример торговой операции TRADE_ACTION_MODIFY для модификации уровней цен отложенного ордера:

Bu temiz. Ve sonra aşağıdaki kodla bir örnek var:

 #define EXPERT_MAGIC 123456    // MagicNumber эксперта
//+------------------------------------------------------------------+
//| Модификация отложенных ордеров                                   |
//+------------------------------------------------------------------+
void OnStart ()
  {
//-- объявление и инициализация запроса и результата
   MqlTradeRequest request={};
   MqlTradeResult   result={};
   int total= OrdersTotal (); // количество установленных отложенных ордеров
//--- перебор всех установленных отложенных ордеров
   for ( int i= 0 ; i<total; i++)
     {
       //--- параметры ордера
       ulong   order_ticket= OrderGetTicket (i);                             // тикет ордера
       string order_symbol= Symbol ();                                       // символ
       int     digits=( int ) SymbolInfoInteger (order_symbol, SYMBOL_DIGITS );   // количество знаков после запятой
       ulong   magic= OrderGetInteger ( ORDER_MAGIC );                         // MagicNumber ордера
       double volume= OrderGetDouble ( ORDER_VOLUME_CURRENT );                 // текущий объем ордера
       double sl= OrderGetDouble ( ORDER_SL );                                 // текущий Stop Loss ордера
       double tp= OrderGetDouble ( ORDER_TP );                                 // текущий Take Profit ордера
       ENUM_ORDER_TYPE type=( ENUM_ORDER_TYPE ) OrderGetInteger ( ORDER_TYPE ); // тип ордера
       int offset = 50 ;                                                   // отступ от текущей цены для установки ордера, в пунктах
       double price;                                                       // цена срабатывания ордера
       double point= SymbolInfoDouble (order_symbol, SYMBOL_POINT );           // размер пункта
       //--- вывод информации об ордере
       PrintFormat ( "#%I64u %s  %s  %.2f  %s  sl: %s  tp: %s  [%I64d]" ,
                  order_ticket,
                  order_symbol,
                   EnumToString (type),
                  volume,
                   DoubleToString ( PositionGetDouble ( POSITION_PRICE_OPEN ),digits),
                   DoubleToString (sl,digits),
                   DoubleToString (tp,digits),
                  magic);
       //--- если MagicNumber совпадает, Stop Loss и Take Profit не заданы
       if (magic==EXPERT_MAGIC && sl== 0 && tp== 0 )
        {
         request.action= TRADE_ACTION_MODIFY ;                           // тип торговой операции
         request.order = OrderGetTicket (i);                             // тикет ордера
         request.symbol   = Symbol ();                                   // символ
         request.deviation= 5 ;                                           // допустимое отклонение от цены
         //--- установка уровня цены, тейк-профит и стоп-лосс ордера в зависимости от его типа
         if (type== ORDER_TYPE_BUY_LIMIT )
           {
            price = SymbolInfoDouble ( Symbol (), SYMBOL_ASK )-offset*point; 
            request.tp = NormalizeDouble (price+offset*point,digits);
            request.sl = NormalizeDouble (price-offset*point,digits);
            request.price    = NormalizeDouble (price,digits);                 // нормализованная цена открытия
           }
         else if (type== ORDER_TYPE_SELL_LIMIT )
           {
           price = SymbolInfoDouble ( Symbol (), SYMBOL_BID )+offset*point; 
            request.tp = NormalizeDouble (price-offset*point,digits);
            request.sl = NormalizeDouble (price+offset*point,digits);
            request.price    = NormalizeDouble (price,digits);                 // нормализованная цена открытия
           }
         else if (type== ORDER_TYPE_BUY_STOP )
           {
           price = SymbolInfoDouble ( Symbol (), SYMBOL_ASK )+offset*point; 
            request.tp = NormalizeDouble (price+offset*point,digits);
            request.sl = NormalizeDouble (price-offset*point,digits);
            request.price    = NormalizeDouble (price,digits);                 // нормализованная цена открытия
           }
         else if (type== ORDER_TYPE_SELL_STOP )
           {
           price = SymbolInfoDouble ( Symbol (), SYMBOL_BID )-offset*point; 
            request.tp = NormalizeDouble (price-offset*point,digits);
            request.sl = NormalizeDouble (price+offset*point,digits);
            request.price    = NormalizeDouble (price,digits);                 // нормализованная цена открытия
           }
         //--- отправка запроса
         if (! OrderSend (request,result))
             PrintFormat ( "OrderSend error %d" , GetLastError ());   // если отправить запрос не удалось, вывести код ошибки
         //--- информация об операции   
         PrintFormat ( "retcode=%u  deal=%I64u  order=%I64u" ,result.retcode,result.deal,result.order);
         //--- обнуление значений запроса и результата
         ZeroMemory (request);
         ZeroMemory (result);
        }
     }
  }
//+------------------------------------------------------------------+

Sarı ile vurgulanan satırı anlamaya çalışıyorum. Soru hemen ortaya çıktı - Örnek bekleyen siparişlerle ilgiliyse , PositionGetDouble'ın ( POSITION_PRICE_OPEN ) bununla ne ilgisi var? Belki de şöyle bir satır olmalı:

 DoubleToString ( OrderGetDouble ( ORDER_PRICE_OPEN ),digits)
Bu ilk an. İkinci an, bu betiği benim tarafımdan belirlenen bir BUY_STOP bekleyen emri olan bir grafikte çalıştırmayı denediğimde geldi (aynı şey diğer bekleyen emir türlerinde de olmasına rağmen). Ve ne olur? Ama hiçbir şey olmadı! Bekleyen siparişte herhangi bir değişiklik görmüyorum. Belki bir şey anlamıyorum?

Uzmanlar sekmesinde yalnızca şunu buluyorum:
 2022.02 . 25 08 : 41 : 38.491 4 (EURUSD,M1)   # 4727791 EURUSD   ORDER_TYPE_BUY_STOP    0.10    0.00000   sl: 0.00000   tp: 0.00000   [ 0 ]
Sevgili uzmanlar, lütfen bu örneği anlamama yardım edin, neden dizinde var, ancak kodu çalışmıyor?

Saygılarımla, Vladimir.

 
Tünaydın. Bana karta nasıl para çekileceğini söyle?
 
801765632 # :
Tünaydın. Bana karta nasıl para çekileceğini söyle?

Bu, ticaret platformu geliştiricisinin web sitesidir. Bu bir komisyoncu değil, bir DC değil, gerçek ticaret hesapları yok.

Sayfanın altında açıkça şöyle yazıyor :


Lütfen komisyoncunuza bu tür soruları sorun - ticaret hesabınıza kime para aktardınız.

 
801765632 # :
Tünaydın. Bana karta nasıl para çekileceğini söyle?
Canlı bir ticaret hesabı açtığınız broker ile iletişime geçin.
 

Sevgili geliştiriciler! Neden (T* const Ptr) ikinci ve üçüncü çağrıda aşırı yükleniyor da (T* & Ptr) değil?

Bu bir hata veya özellik mi? b3213.


 template < typename T>
void f1(T* const Ptr) { Print ( __FUNCSIG__ );}

template < typename T>
void f1(T* & Ptr) { Print ( __FUNCSIG__ );}


class X {};

void OnStart ()
  {
   const X* Ptr = new X;

   f1(Ptr);                                 //void f1<const X>(const X*&)
   f1((X*)Ptr);                             //void f1<X>(X*const)
   f1(( const X*) Ptr);                     //void func_902::f1<const X>(const X*const)

   delete Ptr;
  }
 
Roman # :

Grafikte RMB -> Şablonlar -> Şablonu Kaydet
Dosya adı: default.tpl

Bu şablon varsayılan olarak mevcuttur. yerine koydum. Ne yazık ki yardımcı olmadı. Ona veya ondan geçerken her şey aynı kaldı.

Geliştiriciler olarak nasıl yazacağınızı biliyor musunuz? Elbette bu konuda yüzlerce kez bilgilendirildiler, peki, yine yazacağım.

 

Kaydırırken, sinyallerdeki kapak gider