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

 

Hmm... Koordinatları değiştirmeyi bir şekilde düşünmedim. Bahşiş için teşekkürler

Sonra böyle bir soru. Bir giriş noktası koşulu var. Bunu statik değişkenler aracılığıyla uyguladım, böylece her onay işaretiyle sıfırlanmazlar. Bu nedenle, çizelgedeki bazı yerlerde robot, hiçbir yatay seviyenin olmadığı ve buna göre MA ile kesiştiği bir giriş noktası çizer. Lütfen kodu test cihazınızda çalıştırın ve sorunu göreceksiniz. EURUSD'de. Belki görevi farklı şekilde uygulamanız gerekir? Ben bir programlama uzmanı değilim

Yani bir desen belirdi, seviyeler çizildi ve robot seviyelerden birinin üç kesişimini bekliyor.

bu konuda düşünceleriniz nedir

 
voron_026 :

Hmm... Koordinatları değiştirmeyi bir şekilde düşünmedim. Bahşiş için teşekkürler

Sonra böyle bir soru. Bir giriş noktası koşulu var. Bunu statik değişkenler aracılığıyla uyguladım, böylece her onay işaretiyle sıfırlanmazlar. Bu nedenle, çizelgedeki bazı yerlerde robot, hiçbir yatay seviyenin olmadığı ve buna göre MA ile kesiştiği bir giriş noktası çizer. Lütfen kodu test cihazınızda çalıştırın ve sorunu göreceksiniz . EURUSD'de. Belki görevi farklı şekilde uygulamanız gerekir? Ben bir programlama uzmanı değilim

Yani bir desen belirdi, seviyeler çizildi ve robot seviyelerden birinin üç kesişimini bekliyor.

bu konuda düşünceleriniz nedir

Ve kimin ihtiyacı var, kaba olduğunu düşünmeyin? Robotun hangi değerleri aldığına bakın ve soruna başka bir çözüm bulacaksınız.

 

Yardım iki hata veriyor! Kırmızıyla vurgulanan hatalar, lütfen yardım edin!



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

//| Asyll.mq4 tarafından İzleyen Durdurma |

//| Telif Hakkı 2017, MetaQuotes Software Corp. |

//| https://www.mql5.com |

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

#mülkiyet telif hakkı "Alibek İltica"

#özellik bağlantısı "https://www.mql4you.com"


harici int TralType = 0; // 0-Sar, 1-ATR, 2-HMA

harici çift SAR_Adım = 0.02;

harici çift SAR_Max = 0,2;

harici int ATR_Period = 14;

harici çift ATR_K = 2.0;

harici int MMA_Period = 16;

harici int MMA_Method = 3;

harici int MMA_Shift = 0;

tarihsaat LBT;

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

//| uzman başlatma işlevi |

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

int init()

{

//---

//---

dönüş(0);

}

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

//| Uzman başlatmasızlaştırma işlevi |

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

int tanım()

{

//---

dönüş(0);

}

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

//| Uzman onay işlevi |

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

int başlangıç()


{

bool hatası = yanlış;

if (LBT!=Zaman[0] {

if (OrdersTotal()>0) {

for (int i=o; i<SiparişlerToplam(); i++) {

if (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()<2) {

çift SL = OrderStopLoss();

if (OrderType()==0) {

anahtar(TralType) {

durum 0: SL = iSAR(NULL,0,SAR_Step, SAR_Max,0);

kırmak;

durum 1: SL = Yüksek[1] - iATR(NULL,0,ATR_Period,1)*ATR_K;

kırmak;

durum 2: SL = iCustom(NULL,0,"VininI_HMA_sound&amp",HMA_Period, HMA_Method, 3, HMA_Shift,false,false,"",1,0,0);

kırmak;

}

if (SL<OrderStopLoss())

SL = OrderStopLoss();

}

if (OrderType()==1){

anahtar(TralType){

durum 0: SL = iSAR(NUll,0,SAR_Step, SAR_Max,0);

kırmak;

durum 1: SL = Düşük[1] + iATR(NULL,0,ATR_Period,1)*ATR_K;

kırmak;

durum 2: SL = iCustom(NULL,0,"VininI_HMA_sound&amp",HMA_Period, HMA_Method, 2, HMA_Shift,false,false,"",1,0,0);

kırmak;

}

if (SL>OrderStopLoss())

SL = OrderStopLoss();

}

if (SL!=OrderStopLoss()) {

if (!OrderModify(OrderTicket(),OrderOpenPrice(),OrderTakeProfit(),0))

hata=doğru;

}

}

eğer (!hata)

LBT = Zaman[0];

}


dönüş();

}

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

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
Выберите подходящую торговую стратегию и оформите подписку на нее в пару кликов. Все Сигналы сопровождаются подробной статистикой и графиками. Станьте Поставщиком торговых сигналов и продавайте подписку тысячам трейдеров по всему миру. Наш сервис позволит вам хорошо зарабатывать на прибыльной стратегии даже при небольшом стартовом капитале...
 
Asyll : Yardım iki hata veriyor! Kırmızıyla vurgulanan hatalar, lütfen yardım edin!

Kodu eklemek için SRC butonunu kullanmak mantıklıdır. Hataların metnini bildirin. Uzman Danışmanı hızlandırmak için metni silin:

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

//| Expert initialization function                                   |

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

int init()

  {

//---

   

//---

   return ( 0 );

  }

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

//| Expert deinitialization function                                 |

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

int deinit()

  {

//---

   return ( 0 );

  }

Bu işlevleri çağırmak zaman alır ve bunlar boştur. Ve onlarsız, programın metni ile çalışmak daha kolay olacaktır. Kıvrımlı parantezleri sayın . Bunu kolaylaştırmak için Araçlar menüsündeki Şekillendiriciyi deneyin. Boş satırları atın.

Стилизатор - Работа с исходным кодом - Разработка программ - Справка по MetaEditor
Стилизатор - Работа с исходным кодом - Разработка программ - Справка по MetaEditor
  • www.metatrader5.com
Данная функция предназначена для оформления исходного кода в соответствии с рекомендуемым стандартом. Это позволяет сделать код более читаемым, выглядящем профессионально. Грамотно оформленный код гораздо проще анализировать в последующем как его автору, так и другим пользователям. Для того чтобы запустить стилизатор, необходимо выполнить...
 

Hepinize iyi günler.

MT-4 test cihazında kodlamaya ve test etmeye çalıştığım konusunda basit bir fikrim var

Aşağıdaki koşullar aynı anda karşılandığında açık siparişler

1. Bir dakikalık mumun açılışında

2 ihtiyacım olan fiyata

3. İhtiyacım olan gün

4. Fiyatın değeri, günün değeriyle kesinlikle eşleşmelidir.

Örneğin, 27'sinde açılış fiyatı 1.2414 olan bir dakika mumu vardı.

1) mumun açılışında 2) 1.2414 fiyatından bir emir açmam gerekiyor 3) AMA 27'sinden SONRAKİ GÜN İÇİN

Örneğin, 28'inde açılış fiyatı 1.2438 olan bir dakika mumu vardı.

1) mumun açılışında 2) 1.2438 fiyatından bir emir açmam gerekiyor 3) AMA 28'inden SONRAKİ EN YAKIN GÜN İÇİN

Örneğin, 12'sinde açılış fiyatı 1.2451 olan bir dakika mumu vardı.

1) mumun açılışında 2) 1.2451 fiyatından bir emir açmam gerekiyor 3) AMA 12'sinden SONRA EN YAKIN GÜN


Bu fikri uygulamak için diziler konusunu incelemeye başladım ve iki adet tek boyutlu dizi oluşturdum ama plan işe yaramıyor.

Kodumu yukarıdaki fikri uygulayacak şekilde düzeltirseniz çok minnettar olurum.

Ben yavaş zekalıyım ve bu nedenle doğru kodu yazarsanız ve kelimelerle açıklamazsanız çok minnettar olacağım.

bu yüzden çok daha hızlı anlıyorum

İşte kodum.

 double mass[ 3 ]=
{
1.2414 ,
1.2438 ,
1.2451
};
int mass1[ 3 ]=
{
27 ,
28 ,
12
};
double value = NormalizeDouble ( Bid , 4 ) ;
double S = ArrayBsearch (mass,  value,   WHOLE_ARRAY ,   0 , MODE_ASCEND );
int value1 = Day () ;
int S1 = ArrayBsearch (mass1,  value1, WHOLE_ARRAY ,   0 , MODE_ASCEND );

if ( Bid   == iOpen ( NULL , PERIOD_M1 , 0 ))
if ( Day ()!= S1)
if ( NormalizeDouble ( Bid , 4 )== S)
{
OrderSend ( Symbol (), OP_SELL , 0.1 , Bid , 3 , Ask + 400 * Point , Ask - 200 * Point , "jfh" , 123 );
}
 

Merhaba! Yazılı kod, fiyat üst veya alt seviyenin ötesine geçtiğinde sinyal seviyelerini hareket ettirmek için tasarlanmıştır, ancak bu olmaz. Lütfen bana neyin yanlış olduğunu söyle.

/-------------------------выход цены за пределы сигнальных уровней-----------------------------------------------------------------------------------------------
if ( Bid >=priceA){                                                                                   //если цена вышла за верхнею границу, то переместить сердцевину в новое положение
 ObjectsDeleteAll ();
 OR= 0 ;                                                                                             //переменная ордера обнуляется для поиска ситуации открытия новых ордеров
 }                                                                                                 
if ( Bid <=priceB){                                                                                   //если цена вышла за нижнею границу, то переместить сердцевину в новое положение
 ObjectsDeleteAll ();
 OR= 0 ;                                                                                             //переменная ордера обнуляется для поиска ситуации открытия новых ордеров
 } 
 //----------------------------------------------------------------------------------------------------------------------------------------------------------------
 price= iHigh ( Symbol (), PERIOD_M15 , 0 );                                                               //Сигнальный уровень О(Сердцевина)
ObjectCreate ( "UrO" , OBJ_HLINE , 0 , 0 ,price);
ObjectSet ( "UrO" , OBJPROP_COLOR , clrYellowGreen );                               
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
 priceA=price+ 30 * Point ;                                                                             //Сигнальный уровень А(Максимум)
ObjectCreate ( "UrA" , OBJ_HLINE , 0 , 0 ,priceA);
ObjectSet ( "UrA" , OBJPROP_COLOR , clrDarkSlateBlue ); 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------- 
 priceB=price- 30 * Point ;                                                                             //Сигнальный уровень B(Минимум)
ObjectCreate ( "UrB" , OBJ_HLINE , 0 , 0 ,priceB); 
ObjectSet ( "UrB" , OBJPROP_COLOR , clrOrangeRed ); 
 
ANDREY : Örneğin, 27'sinde açılış fiyatı 1.2414 olan bir dakika mumu vardı.

1) mumun açılışında 2) 1.2414 fiyatından bir emir açmam gerekiyor 3) AMA 27'sinden SONRAKİ GÜN İÇİN

İşte kodum.

İlk olarak, zaten normalleştirilmiş bir BID'yi normalleştirmek, öğretmen söylemediği sürece pek de değerli değildir.

İkincisi, nedir? 27'sinde, bir fiyat belirdi ve 28'inde çalışması için diziye acilen veri giriyorsunuz? Peki ya 28'inde, acil işler yoluna girerse? Dizi, hesaplanması zor olan verileri içerir. Verileriniz hesaplanmalıdır. Expert Advisor'da adım adım hata ayıklamanızı tavsiye ederim. 1) gerekli fiyatı belirleyin ve bunu Alert() işlevini kullanarak görüntüleyin. Doğruluğundan emin olduktan sonra - aşağıdakileri hesaplayın ve çıktısını alın ... ve sonuna kadar böyle devam edin. Tüm kodu sonuna kadar yazmak erken, çünkü hata ayıklama denizinde değiştirilmesi gerekecek. Bu teknolojiye basitten karmaşığa nasıl bakıyorsunuz?

 
vikzip : Yazılı kod, fiyat üst veya alt seviyenin üzerine çıktığında sinyal seviyelerini hareket ettirmek için tasarlanmıştır, ancak bu olmaz

Bakalım burada ne yazıyor. İlk olarak, çizgiler daha kısa olmalıdır. Ekrana sığacaklar ve derleyici daha hızlı olacak

/-------------------------выход цены за пределы сигнальных уровней-------------------------------------------------
if ( Bid >=priceA){                  //если цена вышла за верхнею границу, то переместить сердцевину в новое положение
 ObjectsDeleteAll ();
 OR= 0 ;                            //переменная ордера обнуляется для поиска ситуации открытия новых ордеров
 }
if ( Bid <=priceB){                  //если цена вышла за нижнею границу, то переместить сердцевину в новое положение
 ObjectsDeleteAll ();
 OR= 0 ;                            //переменная ордера обнуляется для поиска ситуации открытия новых ордеров
 } 
 //----------------------------------------------------------------------------------------------------------------
BID daha büyükse, bir şeyler yapın. Ayrıca, BID daha azsa, aynısını yapın. Kısaca formüle edilebilir: Eğer fiyat az ya da çok ise, o zaman ...
Yorumlara bir şeyi taşımakla ilgili bir şeyler yazarsınız, kendiniz de tüm nesneleri silersiniz. 10 satırınız dört ile değiştirilir
 if (( Bid >=priceA) ||( Bid <=priceB)){     //если цена вышла за одну из ГРАНИЦ, то удалить все объекты и очистить признак поиска
   ObjectsDeleteAll ();
   OR= 0 ;                               // А это для чего?????????????????
} 

ANCAK !!! VEYA işareti bir şekilde daha mı kullanılmalı? Görünüşe göre bu VEYA'yı sıfırlamak yerine, bu yere yeni nesnelerin oluşturulması eklenmelidir. Ve daha da kolayı - nesneleri silmek yerine onları yeni bir yere taşıyın - sadece 3 satır kod. Yoksa öğretmen daha fazlasını mı istiyor?

 if (( Bid >=priceA) ||( Bid <=priceB)){     //если цена вышла за одну из ГРАНИЦ, сдвинуть уровни
  ObjectSet("UrO",OBJPROP_PRICE1,iHigh(Symbol(),PERIOD_M15,0));   // Так что ли???
   Objectsset( аналогично)
   Objectsset(     )
}
Basitten yanlışa mı yoksa tam tersi mi?
 
STARIJ :

İlk olarak, zaten normalleştirilmiş bir BID'yi normalleştirmek, öğretmen söylemediği sürece pek de değerli değildir.

İkincisi, nedir? 27'sinde, bir fiyat belirdi ve 28'inde çalışması için diziye acilen veri giriyorsunuz? Peki ya 28'inde, acil işler yoluna girerse? Dizi, hesaplanması zor olan verileri içerir. Verileriniz hesaplanmalıdır. Expert Advisor'da adım adım hata ayıklamanızı tavsiye ederim. 1) gerekli fiyatı belirleyin ve bunu Alert() işlevini kullanarak görüntüleyin. Doğruluğundan emin olduktan sonra - aşağıdakileri hesaplayın ve çıktısını alın ... ve sonuna kadar böyle devam edin. Tüm kodu sonuna kadar yazmak erken, çünkü hata ayıklama denizinde değiştirilmesi gerekecek. Bu teknolojiye basitten karmaşığa nasıl bakıyorsunuz?

Bahşiş için çok teşekkürler.

Ama bana öyle geliyor ki, akıl yürütmenizde bir TİCARET Uzman Danışmanı yazmaya çalıştığım gerçeğinden yola çıkıyorsunuz.

Sana öyle olmadığını söylemediğim için üzgünüm.

Bir danışmanın yardımıyla, yalnızca yukarıdaki parametreler arasında bir düzenliliğin, bir korelasyonun varlığını test etmeye çalışıyorum, yani zaten bir TİCARET danışmanının temelini oluşturabilecek bir fikri onaylamak veya reddetmek için.

Bu nedenle, kodumu düzeltirseniz, her şeyin yukarıda belirtilen planıma uygun olarak gerçekleşmesi için size minnettar olacağım.

Ve bir ticaret danışmanı yazarken yorumlarınız kesinlikle benim için yararlı olacaktır.

teşekkürler

 
ANDREY :

İpucu için çok teşekkürler.

Ama bana öyle geliyor ki, akıl yürütmenizde bir TİCARET Uzman Danışmanı yazmaya çalıştığım gerçeğinden yola çıkıyorsunuz.

Sana öyle olmadığını söylemediğim için üzgünüm.

Bir danışmanın yardımıyla, yalnızca yukarıdaki parametreler arasında bir düzenliliğin, bir korelasyonun varlığını test etmeye çalışıyorum, yani zaten bir TİCARET danışmanının temelini oluşturabilecek bir fikri onaylamak veya reddetmek için.

Bu nedenle, kodumu düzeltirseniz, her şeyin yukarıda belirtilen planıma uygun olarak gerçekleşmesi için size minnettar olacağım.

Ve bir ticaret danışmanı yazarken yorumlarınız kesinlikle benim için yararlı olacaktır.

teşekkürler

Kestiğim için özür dilerim. Ama... Ve ticaret ve ticaret dışı Uzman Danışmanlar arasında çizgi çizme mantığı nasıl olmalıdır?

İşteyken saatinize evde baktığınızdan farklı mı bakıyorsunuz?