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

 
Artyom Trishkin :

Daha hızlı tanıyın ve anlayın

Fiyatları yazacağım, daha sonra nasıl alınır, ne zaman?

 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 yerine bu döngüye eklemek için
                        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 ; 
                                   }
                                }
                             }
                          }
 

Tünaydın! Önceki sipariş negatif kapandıktan sonra stoploss'u arttırması gereken bir fonksiyon yaptım.

Maksimuma ulaşılana kadar ayarlanan adımla artar. Sonuç olarak, her zaman orijinal durdurma kaybı değerini ayarlar.

Sorun nedir? Teşekkür ederim!

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

çift SL()

{

çift SL;

if(OrdersHistoryTotal()==0)

{

sL=Kaybı Durdur;

}

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

{

if(OrderProfit()>=0)

{

sL=Kaybı Durdur;

}

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

{

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

}

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

{

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

}

}

if(sL>maxStep)

{

sL=Kaybı Durdur;

}

dönüş(sL);

}

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

 
Artyom Trishkin :
  1. Boş olmayan işlevlerden değerleri doğru bir şekilde döndürürsünüz, ancak yine de yeni raylara geçmek daha iyidir - orada karmaşık bir şey yoktur.
  2. Yaz, #property strict yönergesini kodun en başına eklemeyi unutma - tüm yönergelerin yazıldığı yerde, hata kodlarını oku - açıklamaları belgelerde ve her şey yolunda ve zor olmayacak.
Hata kodlarını nerede bulabilirim? bu belge nerede?
 
#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()
   }

Neyi yanlış yazıyorum?

Bunun gibi görünmelidir http://prntscr.com/lu1kb9


Geçerli şablonun altına veri eklemeye çalıştım

 //+------------------------------------------------------------------+
//|                                                            п.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()
   
   
  }
//+------------------------------------------------------------------+


Ama hala aynı değil. Yardım
Скриншот
Скриншот
  • prnt.sc
Снято с помощью Lightshot
 
Lütfen yardım edin, maksimum düşüşü hesaplamak için bir diziyi iletebileceğiniz bir işlevi olan var mı?
 

Tünaydın.

Sergey Kovalev'in ders kitabına göre MC-El'de ustalaşıyorum.

Oradan bir danışman aldım, derledim hatta çalışıyor gibi görünüyor ama derlerken bazı yorumlar veriyor, hata değil uyarı veriyor.

Yorum yapmadan derlemek için nelerin değiştirilmesi gerekiyor? Şimdiden teşekkürler.

Dosyalar:
expert.mq4  28 kb
 
Sergey Branin :
Hata kodlarını nerede bulabilirim? bu belge nerede?

Bu sitenin menüsünde - yukarıya bakın

 
Artyom Trishkin :

Bu sitenin menüsünde - yukarıya bakın

Artyom, mql5 ile ilgili belgeler ve mql4 bölümünde sorular var.

Sergey Branin :
Hata kodlarını nerede bulabilirim? bu belge nerede?

İşte mql4 belgeleri . Ve MetaEditor`e'deyken F1'e basmak daha iyidir

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

Artyom, mql5 ile ilgili belgeler var mı? ve mql4 bölümündeki sorular

İşte mql4 belgeleri . Ve MetaEditor`e'deyken F1'e basmak daha iyidir

Ahh... Her neyse - ayrıca hiç de zor değil - parmağınızı F1'e uzatmak ve ihtiyacınız olan her şeyi bulmak forumda bir gün cevap beklemekten daha hızlı. Anlamıyorum ..

 
Merhaba, programlamada yeniyim. Hiçbir yerde kod bulunamadı. Fikir şudur - danışmandan özel bir gösterge yönetmeniz veya bir olay meydana geldiğinde harici parametrelerini (bir) değiştirmeniz gerekir. Özetle mantık - lot (veya örneğin, pozisyon sayısı) > belirtilen değer, göstergede ( başka bir pencerede bulunur ve bu EA ile hiçbir şekilde bağlantılı değilse), harici ayar değiştirilir hindiyi yeniden başlatmadan uçun. Belki ile deneyebilirsiniz
 string ServiceCustomIndicatorByIndexA( int nIndex);// я даже не знаю тут   ANSI или UNICODE нужно
и
int ServiceGetNamesIndicatorsMA( int hwndChart, int nWindow, string &asIndicators[], int nSize);   
ama nasıl uygulayacağımı bilmiyorum, belki programcılardan biri örnek olarak basit bir kod bloğu yazar. c/a Denis