Aynısı. Bir pozisyon kapatılır - bekleyen bir emir verilir, vb. Son değeri döndüren bir fonksiyon (örn. OrderCloseTime()) mevcuttur. Her tik ile, son kapatılan pozisyonun kapanış saatinin değerini alıyorum (1. pozisyon diyelim). Bir sonraki pozisyonu (2 numaralı pozisyon) yeni bir tik ile kapatırken, bu (2 numaralı pozisyonun) kapanış zamanını alıyorum. OrderCloseTime() değeri öncekine göre değişti. Vb. Değişkenin nasıl ve ne kadar değiştiği umurumda değil. Değişkeni değiştirme gerçeği benim için önemlidir. Mantıksal bir işlem gibidir: son kapatılan konumun OrderCloseTime() değeri sondan bir öncekinin OrderCloseTime() değerinden büyükse, falan falan. Ayrıca - son kapatılan pozisyonun OrderClosePrice() değeri, sondan bir önceki pozisyonun OrderClosePrice() değerine eşit değilse, BLA-BLA-BLA yapın. Yoksa böyle bir karşılaştırma yok mu?
İşte ortaya çıkan soru. Diyelim ki danışmanda, gösterge (örneğin, CCI aldım) aşağıdan yukarıya belirli bir seviyeyi (kırmızı çizgi) geçtiğinde bir satın alma sinyali ve yukarıdan aşağıya ne zaman sırasıyla bir satış sinyali göründüğünü varsayalım. A çubuğunun oluşumu sırasında bir siparişin yalnızca bir kez açılabileceğinden nasıl emin olabilirim? Onlar. Diyelim ki gösterge, A çubuğunu oluştururken seviyeyi (kırmızı çizgi) birkaç kez geçiyor, sonra aşağı, sonra yukarı. Dediğim gibi, siparişin sadece bir kez açıldığından emin olmanız gerekiyor.
Aynı zamanda, D çubuğunda bir satış sinyali alındığında (grafikteki durum 2), A çubuğunda açılan emrin kapanmaması ve hiç etkilenmemesi gerekir.
Onlar. açıldıktan sonra siparişler hiçbir şekilde danışman tarafından kontrol edilmez.
Forrim : İşte ortaya çıkan soru. Diyelim ki danışmanda, gösterge (örneğin, CCI aldım) aşağıdan yukarıya belirli bir seviyeyi (kırmızı çizgi) geçtiğinde bir satın alma sinyali ve yukarıdan aşağıya ne zaman sırasıyla bir satış sinyali göründüğünü varsayalım. A çubuğunun oluşumu sırasında bir siparişin yalnızca bir kez açılabileceğinden nasıl emin olabilirim? Onlar. Diyelim ki gösterge, A çubuğunu oluştururken seviyeyi (kırmızı çizgi) birkaç kez geçiyor, sonra aşağı, sonra yukarı. Dediğim gibi, siparişin sadece bir kez açıldığından emin olmanız gerekiyor.
Aynı zamanda, D çubuğunda bir satış sinyali alındığında (grafikteki durum 2), A çubuğunda açılan emrin kapanmaması ve hiç etkilenmemesi gerekir.
Onlar. açıldıktan sonra siparişler hiçbir şekilde danışman tarafından kontrol edilmez.
Şimdiden teşekkürler.
Genel olarak, CCİ o kadar çılgınca atlar ki, Bar sona erdikten ve yenisi açıldıktan sonra kontrol etmek daha iyidir.
Mevcut olan için çok önemliyse, o zaman her kavşakta, mumun global bir değişkendeki açılış saatini hatırlamanız ve ardından zamanın farklı olup olmadığını kontrol etmeniz gerekir (evet ise, bir sipariş açılır) veya aynıdır (=> sipariş açılmaz).
Forrim : İşte ortaya çıkan soru. Diyelim ki danışmanda, gösterge (örneğin, CCI aldım) aşağıdan yukarıya belirli bir seviyeyi (kırmızı çizgi) geçtiğinde bir satın alma sinyali ve yukarıdan aşağıya ne zaman sırasıyla bir satış sinyali göründüğünü varsayalım. A çubuğunun oluşumu sırasında bir siparişin yalnızca bir kez açılabileceğinden nasıl emin olabilirim? Onlar. Diyelim ki gösterge, A çubuğunu oluştururken seviyeyi (kırmızı çizgi) birkaç kez geçiyor, sonra aşağı, sonra yukarı. Dediğim gibi, siparişin sadece bir kez açıldığından emin olmanız gerekiyor.
Aynı zamanda, D çubuğunda bir satış sinyali alındığında (grafikteki durum 2), A çubuğunda açılan emrin kapanmaması ve hiç etkilenmemesi gerekir.
Onlar. açıldıktan sonra siparişler hiçbir şekilde danışman tarafından kontrol edilmez.
//--------------------------------------------------------------- 1 --// Численные значения для М15externdouble StopLoss = 20 ; // SL для открываемого ордераexterndouble TakeProfit = 20 ; // ТР для открываемого ордераexterndouble Step_Sar= 0.02 ; // Шаг Sarexterndouble Maximum_Sar= 0.2 ; // Максимум Sarexterndouble Lot= 0.01 ; // Жестко заданное колич. лотовbool Work=true; // Эксперт будет работать.//--------------------------------------------------------------- 2 --int start()
{
int
Total, // Количество ордеров в окне
Ticket; // Номер ордераdouble
Sar_1 , // Значен. Sar текущее
Sar_0 , // Значение Sar предыдущей свечки
Price, // Цена ордера
SL, // SL ордера
TP; // TP ордераbool
Ans =false, // Ответ сервера после закрытия
Cls_B=false, // Критерий для закрытия Buy
Cls_S=false, // Критерий для закрытия Sell
Opn_B=false, // Критерий для открытия Buy
Opn_S=false; // Критерий для открытия Sell//--------------------------------------------------------------- 3 -- // Учёт ордеров
Total= 0 ; // Количество ордеровfor ( int i= 1 ; i<= OrdersTotal (); i++) // Цикл перебора ордер
{
if ( OrderSelect (i- 1 ,SELECT_BY_POS)==true) // Если есть следующий
{ // Анализ ордеров:if (OrderSymbol()!= Symbol ()) continue ; // Не наш фин. инструмif (OrderType()> 1 ) // Попался отложенный
{
Alert ( "Обнаружен отложенный ордер. Эксперт не работает." );
return ; // Выход из start()
}
Total++; // Счётчик рыночн. ордif (Total> 1 ) // Не более одного орд
{
Alert ( "Несколько рыночных ордеров. Эксперт не работает." );
return ; // Выход из start()
}
Price =OrderOpenPrice(); // Цена выбранн. орд.
SL =OrderStopLoss(); // SL выбранного орд.
TP =OrderTakeProfit(); // TP выбранного орд.
Lot =OrderLots(); // Количество лотов
}
}
//--------------------------------------------------------------- 6 --// Торговые критерии
Sar_1= iSAR ( NULL , 0 , 0.02 , 0.2 , 1 ); // Sar_1
Sar_0= iSAR ( NULL , 0 , 0.02 , 0.2 , 0 ); // Sar_0if (Sar_0 > Price && Sar_1 < Price) // если Sar меняет положение
{
Opn_B=true; // Критерий откр. Buy
}
if (Sar_0 < Price && Sar_1 > Price) // если Sar меняет положение
{
Opn_S=true; // Критерий откр. Sell
}
//--------------------------------------------------------------- 7 --
{
if (Opn_B==true)
{ // критерий откр. Buy
RefreshRates(); // Обновление данных
SL=( 20 +Ask-Bid)*Bid; // Вычисление SL откр.
TP= 20 *Bid; // Вычисление TP откр.Alert ( "Попытка открыть Buy. Ожидание ответа.." );
Ticket= OrderSend ( Symbol (),OP_BUY,Lot,Ask, 0 ,SL,TP); //Открытие Buy
}
if (Fun_Error( GetLastError ())== 1 ) // Обработка ошибокreturn ; // Выход из start()if (Opn_S==true) // критерий откр. Sell
{ // критерий откр. Sell
RefreshRates(); // Обновление данных
SL=( 20 +Ask-Bid)*Ask; // Вычисление SL откр.
TP= 20 *Ask; // Вычисление TP откр.Alert ( "Попытка открыть Sell. Ожидание ответа.." );
Ticket= OrderSend ( Symbol (),OP_SELL,Lot,Bid, 0 ,SL,TP); //Открытие Selreturn ; // Выход из start()
}
if (Fun_Error( GetLastError ())== 1 ) // Обработка ошибокreturn ; // Выход из start()
}
//--------------------------------------------------------------- 9 --return ; // Выход из start()
}
//-------------------------------------------------------------- 10 --int Fun_Error( int Error) // Ф-ия обработ ошибок
{
switch (Error)
{ // Преодолимые ошибки case4 : Alert ( "Торговый сервер занят. Пробуем ещё раз.." );
Sleep ( 3000 ); // Простое решениеreturn ( 1 ); // Выход из функцииcase135 : Alert ( "Цена изменилась. Пробуем ещё раз.." );
RefreshRates(); // Обновим данныеreturn ( 1 ); // Выход из функцииcase136 : Alert ( "Нет цен. Ждём новый тик.." );
while (RefreshRates()==false) // До нового тикаSleep ( 1 ); // Задержка в циклеreturn ( 1 ); // Выход из функцииcase137 : Alert ( "Брокер занят. Пробуем ещё раз.." );
Sleep ( 3000 ); // Простое решениеreturn ( 1 ); // Выход из функцииcase146 : Alert ( "Подсистема торговли занята. Пробуем ещё.." );
Sleep ( 500 ); // Простое решениеreturn ( 1 ); // Выход из функции// Критические ошибкиcase2 : Alert ( "Общая ошибка." );
return ( 0 ); // Выход из функцииcase5 : Alert ( "Старая версия терминала." );
Work=false; // Больше не работатьreturn ( 0 ); // Выход из функцииcase64 : Alert ( "Счет заблокирован." );
Work=false; // Больше не работатьreturn ( 0 ); // Выход из функцииcase133 : Alert ( "Торговля запрещена." );
return ( 0 ); // Выход из функцииcase134 : Alert ( "Недостаточно денег для совершения операции." );
return ( 0 ); // Выход из функцииdefault : Alert ( "Возникла ошибка " ,Error); // Другие варианты return ( 0 ); // Выход из функции
}
}
//-------------------------------------------------------------- 11 --
Temel bir danışman, Parabolik SAR göstergesinin konumu fiyat tablosuna göre değiştiğinde pozisyon açmalıdır, M15, SL ve TP üzerinde yapılan çalışmalar, açılan pozisyon için her zaman sabittir.
EA, mevcut ve önceki mumların gösterge konumlarını karşılaştırır.
Derlerken, hiçbir hata ve açıklama yoktur, "sonuçlar" "grafik" "rapor" sekmelerinde test edildiğinde boş, günlükte bu: "resim"
Bugün kodlamanın 2. günü, daha önce hiç yapmadım, mql ile ilgili kitap okudum, internette sorunumu aradım. çıkmazdayım lütfen yardım edin
Bir dahaki sefere ne değişecek?
Aynı zamanda, D çubuğunda bir satış sinyali alındığında (grafikteki durum 2), A çubuğunda açılan emrin kapanmaması ve hiç etkilenmemesi gerekir.
Onlar. açıldıktan sonra siparişler hiçbir şekilde danışman tarafından kontrol edilmez.
Şimdiden teşekkürler.
Lütfen Demark Sequence kodunun bir parçasını Expert Advisor'a eklememe yardım edin https://www.mql5.com/ru/code/7372
böyle çalışmıyor:
sayı=0:
for(i=barlar; i>=0; i--)
{
if ((iClose(NULL,PERIOD_M5,i+1)<iClose(NULL,PERIOD_M5,i+4) && num!=0 )) {
sayı++;
if ((iClose(NULL,PERIOD_M5,i+1)<iClose(NULL,PERIOD_M5,i+4))
satın almak.......
eğer (sayı==9)
kapat........
1. Birinci türden siparişlerin sayısını sayın
2. İkinci tipteki siparişlerin sayısını sayın
3. Sonuçları karşılaştırın
Sevgili Vinin. Çok teşekkürler!
İşte ortaya çıkan soru. Diyelim ki danışmanda, gösterge (örneğin, CCI aldım) aşağıdan yukarıya belirli bir seviyeyi (kırmızı çizgi) geçtiğinde bir satın alma sinyali ve yukarıdan aşağıya ne zaman sırasıyla bir satış sinyali göründüğünü varsayalım. A çubuğunun oluşumu sırasında bir siparişin yalnızca bir kez açılabileceğinden nasıl emin olabilirim? Onlar. Diyelim ki gösterge, A çubuğunu oluştururken seviyeyi (kırmızı çizgi) birkaç kez geçiyor, sonra aşağı, sonra yukarı. Dediğim gibi, siparişin sadece bir kez açıldığından emin olmanız gerekiyor.
Aynı zamanda, D çubuğunda bir satış sinyali alındığında (grafikteki durum 2), A çubuğunda açılan emrin kapanmaması ve hiç etkilenmemesi gerekir.
Onlar. açıldıktan sonra siparişler hiçbir şekilde danışman tarafından kontrol edilmez.
Şimdiden teşekkürler.
Genel olarak, CCİ o kadar çılgınca atlar ki, Bar sona erdikten ve yenisi açıldıktan sonra kontrol etmek daha iyidir.
Mevcut olan için çok önemliyse, o zaman her kavşakta, mumun global bir değişkendeki açılış saatini hatırlamanız ve ardından zamanın farklı olup olmadığını kontrol etmeniz gerekir (evet ise, bir sipariş açılır) veya aynıdır (=> sipariş açılmaz).
İşte ortaya çıkan soru. Diyelim ki danışmanda, gösterge (örneğin, CCI aldım) aşağıdan yukarıya belirli bir seviyeyi (kırmızı çizgi) geçtiğinde bir satın alma sinyali ve yukarıdan aşağıya ne zaman sırasıyla bir satış sinyali göründüğünü varsayalım. A çubuğunun oluşumu sırasında bir siparişin yalnızca bir kez açılabileceğinden nasıl emin olabilirim? Onlar. Diyelim ki gösterge, A çubuğunu oluştururken seviyeyi (kırmızı çizgi) birkaç kez geçiyor, sonra aşağı, sonra yukarı. Dediğim gibi, siparişin sadece bir kez açıldığından emin olmanız gerekiyor.
Aynı zamanda, D çubuğunda bir satış sinyali alındığında (grafikteki durum 2), A çubuğunda açılan emrin kapanmaması ve hiç etkilenmemesi gerekir.
Onlar. açıldıktan sonra siparişler hiçbir şekilde danışman tarafından kontrol edilmez.
Şimdiden teşekkürler.
Temel bir danışman, Parabolik SAR göstergesinin konumu fiyat tablosuna göre değiştiğinde pozisyon açmalıdır, M15, SL ve TP üzerinde yapılan çalışmalar, açılan pozisyon için her zaman sabittir.
EA, mevcut ve önceki mumların gösterge konumlarını karşılaştırır.
Derlerken, hiçbir hata ve açıklama yoktur, "sonuçlar" "grafik" "rapor" sekmelerinde test edildiğinde boş, günlükte bu: "resim"
Bugün kodlamanın 2. günü, daha önce hiç yapmadım, mql ile ilgili kitap okudum, internette sorunumu aradım. çıkmazdayım lütfen yardım edin
THC , bunu dene
THC , bunu dene
Çok teşekkür ederim, kodda böyle bir verimlilik ve bu tür değişiklikler beklemiyordum.
Lütfen temel mql dışında programlama hakkında daha fazla kitap önerin
Çok teşekkür ederim, kodda böyle bir verimlilik ve bu tür değişiklikler beklemiyordum.
Lütfen temel mql dışında programlama hakkında daha fazla kitap önerin