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

 
DanilaMactep :

MEVDUAT KURMA FİYATINI BURADAN HESAP EDERİM (MAKAR BEN SİZE DOKUNMAYIN EN AZ BENİM ZEVKİMDE SİZE DOKUNMUYORSUNUZ ;-))

ALINAN DEĞERİN İZİN VERİLEN ARALIKTA OLDUĞUNA DAİR BİR ÇEK NASIL YAZILIR ANLAMADIĞIM ŞEY NASIL YAZILIR VE HESAP İZİN VERİLECEK OLDUĞUNDA SİPARİŞİN MİNİMUM OLANAKTA AÇILMASI NASIL YAPILIR?

Bunu dene

Sanırım çözeceksin.

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 02.07.2013                                                     |
//|  Описание : Выполняет корректирование ценовых уровней под STOPLEVEL.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование торгового инструмента                                 |
//|    op - торговая операция                                                  |
//|    pp - цена открытия/установки                                            |
//|    sl - ценовой уровень StopLoss                                           |
//|    tp - ценовой уровень TakeProfit                                         |
//+----------------------------------------------------------------------------+
void CorrectingPrice( string sy, int op, double & pp, double & sl, double & tp) {
   if (sy== "" || sy== "0" ) sy= Symbol ();
  RefreshRates();
   int     di=MarketInfo(sy, MODE_DIGITS);
   int    msl=MarketInfo(sy, MODE_STOPLEVEL);
   int     sp=MarketInfo(sy, MODE_SPREAD );
   double mp=MarketInfo(sy, MODE_POINT);
   double pa=MarketInfo(sy, MODE_ASK);
   double pb=MarketInfo(sy, MODE_BID);
   double ds= NormalizeDouble (pp-sl, di);
   double dp= NormalizeDouble (pp-tp, di);

   if (msl== 0 ) msl= 2 *sp;
   switch (op) {
     case OP_BUY:
      pp=pa;
      sl=pp-ds;
      tp= NormalizeDouble (pp-dp, di);
       if (sl>pp-msl*mp) sl=pp-msl*mp;
       if (tp> 0 && tp<pp+msl*mp) tp=pp+msl*mp;
       break ;
     case OP_SELL:
      pp=pb;
      sl= NormalizeDouble (pp-ds, di);
      tp=pp-dp;
       if (sl> 0 && sl<pp+msl*mp) sl=pp+msl*mp;
       if (tp>pp-msl*mp) tp=pp-msl*mp;
       break ;
     case OP_BUYLIMIT:
       if (pp>pa-msl*mp) {
        pp=pa-msl*mp;
        sl=pp-ds;
        tp= NormalizeDouble (pp-dp, di);
      }
       if (sl>pp-msl*mp) sl=pp-msl*mp;
       if (tp> 0 && tp<pp+msl*mp) tp=pp+msl*mp;
       break ;
     case OP_BUYSTOP:
       if (pp<pa+msl*mp) {
        pp=pa+msl*mp;
         if (sl> 0 ) sl=pp-ds;
         if (tp> 0 ) tp= NormalizeDouble (pp-dp, di);
      }
       if (sl>pp-msl*mp) sl=pp-msl*mp;
       if (tp> 0 && tp<pp+msl*mp) tp=pp+msl*mp;
       break ;
     case OP_SELLLIMIT:
       if (pp<pb+msl*mp) {
        pp=pb+msl*mp;
        sl= NormalizeDouble (pp-ds, di);
        tp=pp-dp;
      }
       if (sl> 0 && sl<pp+msl*mp) sl=pp+msl*mp;
       if (tp>pp-msl*mp) tp=pp-msl*mp;
       break ;
     case OP_SELLSTOP:
       if (pp>pb-msl*mp) {
        pp=pb-msl*mp;
        sl= NormalizeDouble (pp-ds, di);
        tp=pp-dp;
      }
       if (sl> 0 && sl<pp+msl*mp) sl=pp+msl*mp;
       if (tp>pp-msl*mp) tp=pp-msl*mp;
       break ;
     default :
      Message( "CorrectingPrice(): Неизвестная торговая операция!" );
       break ;
  }
}
 
Alekseu Fedotov :

Bunu dene

Sanırım çözeceksin.

Alexey, bu kod parçası için çok teşekkür ederim. Ama ne yazık ki felç geçirmenin sonuçlarından dolayı başka birinin kodunu okuyamıyorum. Bu kod için bir kullanım kılavuzu ve onu neye ve ne şekilde tutturacağıma dair bir tavsiye alabilir miyim?

İşte bana ne geldi. Bu şekilde x barlar için minimum fiyatı arıyordum

   int min_bars= iLowest ( NULL , // ТЕКУЩИЙ СИМВОЛ
           double min_Price= iHigh ( Symbol (), // СИМВОЛ ТЕКУЩЕГО ИНСТРУМЕНТА(НА КОТОРОМ РАБОТАЕТ ГРААЛЬ;-)
          PeriodForWork_pending_orders, // ТФ НА КОТОРОМ АСЧИТЫВАЕМ ЦЕНУ МИНИМУМА
          min_bars //  НА КАКОМ БАРЕ БЫЛ МАКС ТОТ И ПОДСТАВИМ;)
        

ama bu doğru değil, çünkü aihai'ye düşük değil, minimum fiyat belirliyorum. düşükte düzeltildi ve daha az hata var, ancak yine de ortaya çıkıyor (((

Bu nedenle, zor değilse, atılan kodun bir parçası için kullanım kılavuzunu gönderin ...

 

Herkese tekrar merhaba J son mesaja yazdığım ipuçlarını uygulamaya çalıştı ama fayda etmedi. Ertelemeler 130 L hatasını verir , ancak mesele muhtemelen zararı durdurmanın kendisinde değil, açılış fiyatındadır. x mum için maksimum / minimum fiyatı belirleyerek bir alış stop ve bir sat stop için açılış fiyatını alıyorum - bunun gibi.

           int max_bars= iHighest ( NULL , // ТЕКУЩИЙ СИМВОЛ
          PeriodForWork_pending_orders, // ТФ ДЛЯ ПОИСКА МАКСИМУМА  УСТАНОВКИ ОТЛОЖЕННОГО ОРДЕРА
           MODE_HIGH , // ИЩЕМ МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ ХАЙ
          range_max // ДИАПОЗОН ПОИСКА ИЗ ЭН СВЕЧЕЙ
          ); // ПОЛУЧАЕМ НОМЕР СВЕЧИ НА КОТОРОЙ ИМЕЕТСЯ МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ
           double max_Price= iHigh ( Symbol (), // СИМВОЛ ТЕКУЩЕГО ИНСТРУМЕНТА(НА КОТОРОМ РАБОТАЕТ ГРААЛЬ;-)
          PeriodForWork_pending_orders, // ТФ НА КОТОРОМ АСЧИТЫВАЕМ ЦЕНУ МАКСИМУМА
          max_bars //  НА КАКОМ БАРЕ БЫЛ МАКС ТОТ И ПОДСТАВИМ;)
        
          
          );   //КОНЕЦ ПОЛУЧЕНИЯ ДАННЫХ ДЛЯ ПОКУПАК*********** 
          
           //----ПОЛУЧЕНИЕ ДАННЫХ ДЛЯ ОТЛОЖЕННЫХ ПРОДАЖ
          
          
                     int min_bars= iLowest ( NULL , // ТЕКУЩИЙ СИМВОЛ
          PeriodForWork_pending_orders, // ТФ ДЛЯ ПОИСКА МАКСИМУМА  УСТАНОВКИ ОТЛОЖЕННОГО ОРДЕРА
           MODE_HIGH , // ИЩЕМ МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ ХАЙ
          range_max // ДИАПОЗОН ПОИСКА ИЗ ЭН СВЕЧЕЙ
          ); // ПОЛУЧАЕМ НОМЕР СВЕЧИ НА КОТОРОЙ ИМЕЕТСЯ МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ
           double min_Price= iLow ( Symbol (), // СИМВОЛ ТЕКУЩЕГО ИНСТРУМЕНТА(НА КОТОРОМ РАБОТАЕТ ГРААЛЬ;-)
          PeriodForWork_pending_orders, // ТФ НА КОТОРОМ АСЧИТЫВАЕМ ЦЕНУ МАКСИМУМА
          min_bars //  НА КАКОМ БАРЕ БЫЛ МАКС ТОТ И ПОДСТАВИМ;)
        
          
          ); // КОНЕЦ АЙЛОУ

Durdurma ile ilgili değil, çünkü stop ve atr ve sabit ile tamamen aynı parametrelerle, piyasa emirleri her şey hatasız açılıyor. Dolayısıyla sorun, bir gecikme kurma maliyetinin hesaplanmasındadır. böyle siparişler açıyorum

 OrderSend ( Symbol (),OP_SELLSTOP,lot,min_Price,slippages,min_Price+sl , min_Price-tp ,comment_ao_otloj_sell); // ОТКРКЫВВАЕМ ОТЛОЖЕННЫЙ СЕЛ ОРДЕР

OrderSend ( Symbol (),OP_BUYSTOP,lot,max_Price,slippages,max_Price-sl,max_Price+tp ,comment_ao_otloj_buy,magik_number, TimeCurrent ()+order_life_time); // ОТКРЫВАЕМ ОТЛОЖЕННЫЙ БАЙ ОРДЕР


P/S, bir pozisyon açmak için bir fiyat filtresi oluşturmak için gecikmeleri kullanmak istediğimi söylemeyi tamamen unuttum - yani, fiyat doğru yönde giderse, gecikme işe yarayacak ve değilse, olacak iptal edildi ve pazardan çıktım. Açılış fiyatını belirlerken neyi yanlış yaptığımı söyler misiniz? Ve belki de anlaşmanın fiyat filtresi için daha basit bir çözüm var mı?

p / s Yalvarırım uygulanabilecek bir kod yazarsanız bunun için detaylı açıklamalar yazın çünkü kodu okurken ciddi sorunlar yaşıyorum. Ayrıntılı bir talimat, yani, kod ne için ve nasıl uygulanabilir (onu bir değişkene ekleyin ve onunla veya başka bir şekilde bir şeyler yapın ve bir şekilde koda yorum yazın). Şimdiden teşekkürler ;-) P/S bilgisi ve tecrübesi olan geçmeyin - kardeşçe yardım edin - pliz'i kızdırmayın ;-) Kase O_o'yu bitirmeniz gerekiyor ;-)

 
Meslektaşlar!

Kim nesnelerle çalıştı . Lütfen, elle çizilmiş bir üçgen, elips veya karenin (anladığım kadarıyla grafikte bir ad atanmış) bir işlem gerçekleştirdiği bir kod parçası örneğini atın, örneğin bir uyarı (fiyatın bunun içinde olması durumunda). nesne). Dilenmek. Bu konu hakkında çok az bilgi var, ancak teorik olarak referans kitabında çözemiyorum, ancak prensibin orada temel olduğundan şüpheleniyorum.
 
DanilaMactep :

Herkese tekrar merhaba J son mesaja yazdığım ipuçlarını uygulamaya çalıştı ama fayda etmedi. Ertelemeler 130 L hatasını verir , ancak mesele muhtemelen zararı durdurmanın kendisinde değil, açılış fiyatındadır. x mum için maksimum / minimum fiyatı belirleyerek bir alış stop ve bir sat stop için açılış fiyatını alıyorum - bunun gibi.

Durdurma ile ilgili değil, çünkü stop ve atr ve sabit ile tamamen aynı parametrelerle, piyasa emirleri her şey hatasız açılıyor. Dolayısıyla sorun, bir gecikme kurma maliyetinin hesaplanmasındadır. böyle siparişler açıyorum


P/S, bir pozisyon açmak için bir fiyat filtresi oluşturmak için gecikmeleri kullanmak istediğimi söylemeyi tamamen unuttum - yani, fiyat doğru yönde giderse, gecikme işe yarayacak ve değilse, olacak iptal edildi ve piyasadan çekiliyorum. Açılış fiyatını belirlerken neyi yanlış yaptığımı söyler misiniz? Ve belki de işlem için fiyat filtresi için daha basit bir çözüm var mı?

p / s Yalvarırım uygulanabilecek bir kod yazarsanız bunun için detaylı açıklamalar yazın çünkü kodu okurken ciddi sorunlar yaşıyorum. Ayrıntılı bir talimat, yani, kod ne için ve nasıl uygulanabilir (onu bir değişkene ekleyin ve onunla veya başka bir şekilde bir şeyler yapın ve bir şekilde koda yorum yazın). Şimdiden teşekkürler ;-) P/S bilgisi ve tecrübesi olan geçmeyin - kardeşçe yardım edin - pliz'i kızdırmayın ;-) Kase O_o'yu bitirmeniz gerekiyor ;-)

iLowest işlevinde MODE_HIGH yerine MODE_LOW girin.

 

Lütfen bana söyle. Grafiğe bir doğru parçası çizin. Segmentin başlangıç ve bitiş fiyatlarını bilmeniz gerekir. Yapılabilir?

Dosyalar:
EURUSDM1.png  22 kb
 
Forallf :

Lütfen bana söyle. Grafiğe bir doğru parçası çizin. Segmentin başlangıç ve bitiş fiyatlarını bilmeniz gerekir. Yapılabilir?

Yapabilir
 
Forallf :

Lütfen bana söyle. Grafiğe bir doğru parçası çizin. Segmentin başlangıç ve bitiş fiyatlarını bilmeniz gerekir. Yapılabilir?

bu segmentin adının orijinal olması arzu edilir

 
Alekseu Fedotov :

iLowest işlevinde MODE_HIGH yerine MODE_LOW girin.

Fark edip yönlendirdiğiniz için çok teşekkür ederim, bu konuyu düzelttim ve 2 yıllık bir testte 130 26 hata vardı. Aynı zamanda, normalde 115 anlaşma açıldı
 
Порт-моне тв :
Meslektaşlar!

Kim nesnelerle çalıştı . Lütfen, elle çizilmiş bir üçgen, elips veya karenin (anladığım kadarıyla grafikte bir ad atanmış) bir işlem gerçekleştirdiği bir kod parçası örneğini atın, örneğin bir uyarı (fiyatın bunun içinde olması durumunda). nesne). Dilenmek. Bu konu hakkında çok az bilgi var, ancak teorik olarak referans kitabında çözemiyorum, ancak prensibin orada temel olduğundan şüpheleniyorum.

Biri bana yardım edecek mi?