Beyler, böyle bir soru, cevabını hiçbir yerde bulamadığım. Yeni çubukların açılmaması ve durumum çalışana kadar sıfır çubuğunda işaretlemek için göstergeye hangi işlevi yazmalı, lütfen PM'de cevaplayın))
Sayıları belirledim extern int a =2; dış int b =3; dış int c =4; a, b veya c değiştiğinde, verilen bazı d (örneğin, d=344) ile karşılaştırmak için değerini değiştirecek şekilde a b c sayısını nasıl ayarlayabilirim?
Sayıları belirledim extern int a =2; dış int b =3; dış int c =4; a, b veya c değiştiğinde, verilen bazı d (örneğin, d=344) ile karşılaştırmak için değerini değiştirecek şekilde a b c sayısını nasıl ayarlayabilirim?
Merhaba! 2020.10.03_13:33 GMT+3. MetaTrader 4 için standart Hareketli Ortalama Uzman Danışmanı aldım ve karlı hale gelmesi için değiştirmeye başladım. Strateji test cihazında OrderProfit() işlevini kullanarak bir anlaşmayı kapatmanın koşullarını tanımlamaya çalışırken, EA bu koşulda anlaşmaları kapatmayı durdurdu. Anlaşmayı bitiremez. Ancak, anlaşmayı kapatmak için koşulları doğru yazdığımdan şüpheliyim. Aksi takdirde, danışman anlaşmaları kapatırdı. Muhtemelen işlemin açılış fiyatını ve son fiyatları yazmaya çalışacağım. İşlemin açılış fiyatı ile son fiyat arasındaki maksimum farka ulaşıldıktan ve bu fark azaldıktan sonra işlemi kapatın. Danışman dosyasını ekliyorum. 13:50 GMT+3.
Николай Никитюк : Merhaba! 2020.10.03_13:33 GMT+3. MetaTrader 4 için standart Hareketli Ortalama Uzman Danışmanı aldım ve karlı hale gelmesi için değiştirmeye başladım. Strateji test cihazında OrderProfit() işlevini kullanarak bir anlaşmayı kapatmanın koşullarını tanımlamaya çalışırken, EA bu koşulda anlaşmaları kapatmayı durdurdu. Anlaşmayı bitiremez. Ancak, anlaşmayı kapatmak için koşulları doğru yazdığımdan şüpheliyim. Aksi takdirde, danışman anlaşmaları kapatırdı. Muhtemelen işlemin açılış fiyatını ve son fiyatları yazmaya çalışacağım. İşlemin açılış fiyatı ile son fiyat arasındaki maksimum farka ulaşıldıktan ve bu fark azaldıktan sonra işlemi kapatın. Danışman dosyasını ekliyorum. 13:50 GMT+3.
for ( int i= 0 ;i< OrdersTotal ();i++)
{
if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== false ) break ;
if (OrderMagicNumber()!=MAGICMA || OrderSymbol()!= Symbol ()) continue ;
//--- check order type// if (OrderType()==OP_BUY)
{
/*
if(OrderProfit()>0.0)
{ProfitMax=OrderProfit(); break;} // Здесь у вас прерывается цикл, если сделка в плюсе
if(OrderProfit()>ProfitMax)
{ProfitMax=OrderProfit(); break;}
if((ProfitMax-DiffProfit)<0.0) break;
if((ProfitMax-DiffProfit)>OrderProfit())
*/if (DiffProfit<OrderProfit()) // Исходя из ваших условий, то вот
{
if (!OrderClose(OrderTicket(),OrderLots(),Bid, 3 ,White))
Print ( "OrderClose error " , GetLastError ());
}
elsebreak ;
break ;
}
if (OrderType()==OP_SELL)
{
/*
if(OrderProfit()>0.0)
{ProfitMax=OrderProfit(); break;} // Здесь у вас прерывается цикл, если сделка в плюсе
if(OrderProfit()>ProfitMax)
{ProfitMax=OrderProfit(); break;}
if((ProfitMax-DiffProfit)<0.0) break;
if((ProfitMax-DiffProfit)>OrderProfit())
*/if (DiffProfit<OrderProfit()) // Исходя из ваших условий, то вот
{
if (!OrderClose(OrderTicket(),OrderLots(),Ask, 3 ,White))
Print ( "OrderClose error " , GetLastError ());
}
elsebreak ;
break ;
}
}
//+------------------------------------------------------------------+
Giriş verilerini normalleştirmek için bir fonksiyon yazmayı üstlendi. Ancak orijinal değerleri normalleştirilmiş değerlerle "değiştiremiyorum". Onlar. Açık zaman serisi arabelleğindeki değerleri Temp dizisinden yeni değerlerle güncelleyemiyorum. Benim hatam ne? OOP ve OOP olmayanları geçmeye çalıştığım hissi var))
Open= new CiOpen();
if ( CheckPointer (Open)== POINTER_INVALID || !Open.Create(Symb.Name(), PERIOD_CURRENT ))
return ;
//---int bars= 10 ;
double Temp[]; //Создаем массив для временного хранения входных данныхArraySetAsSeries (Temp, true ); //Устанавливает флаг AS_SERIES
Open.GetData( 0 ,bars,Temp); //Копируем необходимые данные в массив Temp
InputNormalize(Temp,bars); //Нормализуем данные в массиве
//---Как заменить значения в Open значениями из Temp?---
}
//+------------------------------------------------------------------+//| функция нормализации входных данных |//+------------------------------------------------------------------+void InputNormalize( double &buffer[], int bars)
{
double d1=- 1 ;
double d2= 1 ;
double x_min=buffer[ ArrayMinimum (buffer, 0 ,bars)];
double x_max=buffer[ ArrayMaximum (buffer, 0 ,bars)];
for ( int i= 0 ; i<bars; i++)
{
buffer[i]=(((buffer[i]-x_min)*(d2-d1))/(x_max-x_min))+d1;
}
return ;
}
Eminim daha kolay hale getirilebilir! Bu durumda, lütfen bana öğretin)
Giriş verilerini normalleştirmek için bir fonksiyon yazmayı üstlendi. Ancak orijinal değerleri normalleştirilmiş değerlerle "değiştiremiyorum". Onlar. Açık zaman serisi arabelleğindeki değerleri Temp dizisinden yeni değerlerle güncelleyemiyorum. Benim hatam ne? OOP ve OOP olmayanları geçmeye çalıştığım hissi var))
Eminim daha kolay hale getirilebilir! Bu durumda, lütfen bana öğretin)
Dil belgelerini okuyun
Önceden tanımlanmış değişkenlerin değeri, yürütme için mql4 programını başlatmadan önce istemci terminali tarafından ayarlanır. Önceden tanımlanmış değişkenler sabittir ve bir mql4 programından değiştirilemez.
Для каждой выполняющейся mql4-программы поддерживается ряд предопределенных переменных, которые отражают состояние текущего ценового графика на момент запуска программы - эксперта, скрипта или пользовательского индикатора. Значение предопределенным переменным устанавливает клиентский терминал перед запуском mql4-программы на выполнение...
Alexey, teşekkürler! Şimdi bunun imkansız olduğu açık.
Doğru, tam olarak mql4'e sahip değilim. Verileri CiOpen sınıfı aracılığıyla değiştirmeye çalışıyorum. Dizide belirtilen konumda öğeyi değiştirmesi gereken Update yönteminin varlığıyla kafam karıştı.
Alexey, teşekkürler! Şimdi bunun imkansız olduğu açık.
Doğru, tam olarak mql4'e sahip değilim. Verileri CiOpen sınıfı aracılığıyla değiştirmeye çalışıyorum. Dizide belirtilen konumda öğeyi değiştirmesi gereken Update yönteminin varlığıyla kafam karıştı.
Soru mql4 bölümünde sorulduğu için mql4 ile ilgili cevap verdim. Sorunuzda mql5 ipucu yok. Ama sonuç aynı.
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
Merhaba!
Üç çama dolanmış:
Sayıları belirledim extern int a =2; dış int b =3; dış int c =4; a, b veya c değiştiğinde, verilen bazı d (örneğin, d=344) ile karşılaştırmak için değerini değiştirecek şekilde a b c sayısını nasıl ayarlayabilirim?
Teşekkür ederim!
Merhaba!
Üç çama dolanmış:
Sayıları belirledim extern int a =2; dış int b =3; dış int c =4; a, b veya c değiştiğinde, verilen bazı d (örneğin, d=344) ile karşılaştırmak için değerini değiştirecek şekilde a b c sayısını nasıl ayarlayabilirim?
Teşekkür ederim!
x = c + b*10 + a*100
x = c + b*10 + a*100
Gosspadii! Ve kafamı kırıyorum! Teşekkür ederim!
Merhaba! 2020.10.03_13:33 GMT+3. MetaTrader 4 için standart Hareketli Ortalama Uzman Danışmanı aldım ve karlı hale gelmesi için değiştirmeye başladım. Strateji test cihazında OrderProfit() işlevini kullanarak bir anlaşmayı kapatmanın koşullarını tanımlamaya çalışırken, EA bu koşulda anlaşmaları kapatmayı durdurdu. Anlaşmayı bitiremez. Ancak, anlaşmayı kapatmak için koşulları doğru yazdığımdan şüpheliyim. Aksi takdirde, danışman anlaşmaları kapatırdı. Muhtemelen işlemin açılış fiyatını ve son fiyatları yazmaya çalışacağım. İşlemin açılış fiyatı ile son fiyat arasındaki maksimum farka ulaşıldıktan ve bu fark azaldıktan sonra işlemi kapatın. Danışman dosyasını ekliyorum. 13:50 GMT+3.
Merhaba!
Giriş verilerini normalleştirmek için bir fonksiyon yazmayı üstlendi. Ancak orijinal değerleri normalleştirilmiş değerlerle "değiştiremiyorum". Onlar. Açık zaman serisi arabelleğindeki değerleri Temp dizisinden yeni değerlerle güncelleyemiyorum. Benim hatam ne? OOP ve OOP olmayanları geçmeye çalıştığım hissi var))
Eminim daha kolay hale getirilebilir! Bu durumda, lütfen bana öğretin)
Merhaba!
Giriş verilerini normalleştirmek için bir fonksiyon yazmayı üstlendi. Ancak orijinal değerleri normalleştirilmiş değerlerle "değiştiremiyorum". Onlar. Açık zaman serisi arabelleğindeki değerleri Temp dizisinden yeni değerlerle güncelleyemiyorum. Benim hatam ne? OOP ve OOP olmayanları geçmeye çalıştığım hissi var))
Eminim daha kolay hale getirilebilir! Bu durumda, lütfen bana öğretin)
Dil belgelerini okuyun
Dil belgelerini okuyun
Alexey, teşekkürler! Şimdi bunun imkansız olduğu açık.
Doğru, tam olarak mql4'e sahip değilim. Verileri CiOpen sınıfı aracılığıyla değiştirmeye çalışıyorum. Dizide belirtilen konumda öğeyi değiştirmesi gereken Update yönteminin varlığıyla kafam karıştı.
Alexey, teşekkürler! Şimdi bunun imkansız olduğu açık.
Doğru, tam olarak mql4'e sahip değilim. Verileri CiOpen sınıfı aracılığıyla değiştirmeye çalışıyorum. Dizide belirtilen konumda öğeyi değiştirmesi gereken Update yönteminin varlığıyla kafam karıştı.
Soru mql4 bölümünde sorulduğu için mql4 ile ilgili cevap verdim. Sorunuzda mql5 ipucu yok. Ama sonuç aynı.