Mevcut grafik üzerinde ZigZagColor göstergesini oluşturan ve Expert Advisor'ı kapattıktan sonra silen program kodu şöyle görünür:
EA başlatma bloğunda
//--- create handle of the indicator iCustom
handle_iCustom= iCustom (m_symbol.Name(), Period (), "Examples\\ZigzagColor" ,
Inp_ZZ_Depth,
Inp_ZZ_Deviation,
Inp_ZZ_Backstep);
ChartIndicatorAdd ( ChartID (), 0 ,handle_iCustom);
EA başlatmadan kaldırma bloğunda
( Bu kodu kullanacaklar için DİKKAT ! Kodun bu versiyonu orta seviyedir ve sadece gösterge ayarları için geçerlidir Inp_ZZ_Depth=80 ; Inp_ZZ_Deviation=20 ; Inp_ZZ_Backstep=0 ; diğer ayarlarla gösterge silinmez! deinitialization bloğundaki diğer ayarlarla silinecek gösterge , 80,20,0 yerine bunları belirtmeniz gerekir.)
Bu seçenekle, herhangi bir ayar için gösterge kaldırılır , ancak danışmanı derlerken, editör bir sayıdan bir dizgeye örtük dönüştürme hakkında 3 uyarı yazar:
implicit conversion from 'number' to 'string' ZigZag_Fibonacci_(M1).mq5 230 38
Her şeyin şu değerlerle ilgili olduğundan şüpheleniyorum: "+Inp_ZZ_Depth+", "+Inp_ZZ_Deviation+", "+Inp_ZZ_Backstep+". Genel olarak, MQL5 programlama dilini daha fazla incelemeniz gerekir.
Desteğiniz için hepinize bir kez daha teşekkür ederim!!!
Mevcut grafikte ZigZagColor göstergesini oluşturan ve Expert Advisor'ı kapattıktan sonra kaldıran son kod şöyle görünür:
EA başlatma bloğunda
EA başlatmadan kaldırma bloğunda
( Bu kodu kullanacaklar için DİKKAT ! Kodun bu versiyonu orta seviyedir ve sadece gösterge ayarları için geçerlidir Inp_ZZ_Depth=80 ; Inp_ZZ_Deviation=20 ; Inp_ZZ_Backstep=0 ; diğer ayarlarla gösterge silinmez! deinitialization bloğundaki diğer ayarlarla silinecek gösterge , 80,20,0 yerine bunları belirtmeniz gerekir.)
Şimdi, nasıl yapılacağını anlamak için kalır, böylece gösterge ayarları değiştirildiğinde, aynı zamanda silinir. Bu seçeneği denedim:
Bu seçenekle, herhangi bir ayar için gösterge kaldırılır , ancak danışmanı derlerken, editör bir sayıdan bir dizgeye örtük dönüştürme hakkında 3 uyarı yazar:
Her şeyin şu değerlerle ilgili olduğundan şüpheleniyorum: "+Inp_ZZ_Depth+", "+Inp_ZZ_Deviation+", "+Inp_ZZ_Backstep+". Genel olarak, MQL5 programlama dilini daha fazla incelemeniz gerekir.
Desteğiniz için hepinize bir kez daha teşekkür ederim!!!
Ben kendim öğrendim - ve kendim mevcut kodlardan kopyalıyorum, - Sorun şu ki nasıl heykel yaptığımı açıklayamıyorum!? - içindeki bir şey sana nasıl kör olunacağını söyler.
----------------------------------
Neyi kör ettiğimi biliyorum, orada yeterli değil, hat için başka bir Trol.
Trol eklendi
inputstring t0= "---- Trailing Line: -----" ; //inputushort InpObjTrailingStop = 0 ; // Obj: Trailing Stop (distance from price to object, in pips)inputushort InpObjTrailingStep = 0 ; // Obj: Trailing Step, in pips (1.00045-1.00055=1 pips)inputstring t1= "---- Line Name -----" ; //inputstring InpObjUpName = "Имя Линии Up" ; // Obj: Up (Trailing Horizontal Line) or Trend Line)input ENUM_TRADE_COMMAND InpTradeCommand = UpName_s; // Obj: command: UPinputstring InpObjDownName = "Имя Линии Down" ; // Obj: Down (Trailing Horizontal Line) or Trend Line)input ENUM_TRADE_COMMAND InTradeCommand = DownName_b; // Obj: command: DOWNinputushort InpObjStep = 15 ; // Obj: Step (distance from price to object, in pips)
Oooh, çok teşekkür ederim, bu kadar çok bilgi ile çok şey yapabilirsiniz ...
Bir iş gezisine çıkıyorum , bana verilen malzemeleri araştırmak sanırım daha zor ama kodlamaya ne dersiniz... Kağıtta mümkün, güzel bir antrenman olur diye düşünüyorum...
Saygılarımla, Roman
Herkese iyi günler!
Roman bir iş gezisindeyken ve bu konuya katılmazken onun yerine MQL5 programlama dili hakkında sorular sormaya devam edeceğim. CodeBase'de Maksimum Sermaye Riski Yüzdesi kitaplığını https://www.mql5.com/en/code/2142 adresinde buldum. Alış ve satış için pozisyon açmak için basit bir Uzman Danışman kodunu denemeye karar verdim, ancak sabit bir lotla değil, maksimum sermaye riski yüzdesiyle.
İşte kaynak kod (ana göreve konsantre olmak için gereksiz olan her şey kaldırıldı):
kodu belirtilen kitaplıktan içine ekledi. Sonuç bu koddur:
//+------------------------------------------------------------------+//| 11111111111.mq5 |//| Copyright 2020, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2020, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"#include <Trade\SymbolInfo.mqh> // добавлено из библиотекиinputint TakeProfit= 300 ; //Тейк-профитinputint StopLoss= 250 ; //Стоп-лоссinputdouble lot= 0.1 ; //Лотinputdouble MaximumPercentageRisk= 25 ; //Риск - добавлено из библиотекиbool UseMaximumPercentageRisk= true ; // добавлено из библиотекиdouble Ask;
double Bid;
//--- этот блок добавлен из библиотеки//+------------------------------------------------------------------+//| GetLotSize RPTrade |//+------------------------------------------------------------------+double GetLotSize( double lotsize)
{
//--- Gets pair specs
CSymbolInfo symInfo;
int digits_bn=symInfo. Digits ();
double points_bn=symInfo. Point ();
string symbol_bn= _Symbol ;
//--- adjust lot int tmpdecimal= 1 ;
double old_lot=lotsize;
//---if (( NormalizeDouble ( AccountInfoDouble ( ACCOUNT_FREEMARGIN )*(MaximumPercentageRisk/ 100 )/ 1000.0 ,tmpdecimal)<lotsize)
&& UseMaximumPercentageRisk) //лот подходит под риск ?
{
lotsize= NormalizeDouble ( AccountInfoDouble ( ACCOUNT_FREEMARGIN )
*(MaximumPercentageRisk/ 100 )/ 1000.0 ,tmpdecimal); //расчет нового размера лота if (lotsize< SymbolInfoDouble (symbol_bn, SYMBOL_VOLUME_MIN )) //размер лота подходит под минимльный размер лота брокера ?
{
lotsize= SymbolInfoDouble (symbol_bn, SYMBOL_VOLUME_MIN ); //Нет! Настройка размера лота под минимальный размер лота брокераPrint ( _Symbol , " Lot adjusted from " ,old_lot, " для уменьшения размера разрешенного сервером " ,lotsize);
}
else
{
Print ( _Symbol , " Lot adjusted from " ,old_lot,
" to " ,lotsize, " для соответствия условию максимального риска. В каждой сделке рисковать можно только " ,
MaximumPercentageRisk, "% от свободной маржи." ); //Да! if ( MathAbs (lotsize/ SymbolInfoDouble (symbol_bn, SYMBOL_VOLUME_STEP )
- MathRound (lotsize/ SymbolInfoDouble (symbol_bn, SYMBOL_VOLUME_STEP )))> 1.0 E- 10 ) //Размер лота подходит под разрешенный шаг брокера ?
{
lotsize= SymbolInfoDouble (symbol_bn, SYMBOL_VOLUME_STEP )
* NormalizeDouble (lotsize/ SymbolInfoDouble (symbol_bn, SYMBOL_VOLUME_STEP ), 0 ); //НЕТ! Перерасчет размера лота. Print ( "M-" , _Symbol , " Warning: Your calculated percentage at risk lot size of was not a multiple of minimal step" ,
SymbolInfoDouble (symbol_bn, SYMBOL_VOLUME_STEP ), ". Размер лота изменился до" ,lotsize);
}
}
}
return (lotsize);
}
//+------------------------------------------------------------------+//| Функция открытия длинной (Long) позиции. |//+------------------------------------------------------------------+int OpenLong( double volume= 0.1 ,
int slippage= 10 ,
string comment= "Long" ,
int magic= 0 )
{
MqlTradeRequest my_trade;
MqlTradeResult my_trade_result;
ZeroMemory (my_trade);
my_trade.action= TRADE_ACTION_DEAL ;
my_trade.symbol= Symbol ();
my_trade.volume= NormalizeDouble (volume, 1 );
my_trade.price= NormalizeDouble (Ask, _Digits );
my_trade.sl= NormalizeDouble (Ask-StopLoss* _Point , _Digits );
my_trade.tp= NormalizeDouble (Ask+TakeProfit* _Point , _Digits );
my_trade.deviation=slippage;
my_trade.type= ORDER_TYPE_BUY ;
my_trade.type_filling= ORDER_FILLING_FOK ;
my_trade.comment=comment;
my_trade.magic=magic;
ResetLastError ();
if ( OrderSend (my_trade,my_trade_result))
{
Print ( "Код результата операции - " ,my_trade_result.retcode);
}
else
{
Print ( "Код результата операции - " ,my_trade_result.retcode);
Print ( "Ошибка открытия ордера = " , GetLastError ());
}
return ( 0 );
}
//+------------------------------------------------------------------+//| функция открытия короткой (Short) позиции. |//| Аналогична функции открытия длинной позиции. |//+------------------------------------------------------------------+
.
.
.
.
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit ()
{
return ( 0 );
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit ( constint reason){}
//+------------------------------------------------------------------+//| Expert OnTick function |//+------------------------------------------------------------------+voidOnTick ()
{
. double Open[];
.
.
if (Open[ 1 ]>(Open[ 2 ]))
{
OpenShort(lot, 10 , "Short" , 1234 );
return ;
}
if ((Open[ 1 ]<Open[ 2 ])
{
OpenLong(lot, 10 , "Long" , 1234 );
cantrade= false ;
return ;
}
}
}
return ;
}
//+------------------------------------------------------------------+
Ancak danışman hem sabit bir parti üzerinde çalıştı hem de çalışmaya devam ediyor, yani. riski dikkate alınmaz. Söyle bana, lütfen, sermaye riskinin yüzdesini kazanmak için ne yapılması gerekiyor.
Change Chart and Timeframe Модифицированные скрипты для быстрого изменения графиков и таймфреймов на всех графиках при помощи горячих клавиш. Apply Template Простой скрипт для применения шаблона и/или таймфрейма ко всем открытым графикам. Long position Простой скрипт...
Roman bir iş gezisindeyken ve bu konuya aktif olarak katılmazken onun yerine MQL5 programlama dili hakkında sorular sormaya devam edeceğim. CodeBase'de Maksimum Sermaye Riski Yüzdesi kitaplığını https://www.mql5.com/en/code/2142 adresinde buldum. Alış ve satış pozisyonlarının açılmasını, ancak sabit bir lotla değil, maksimum sermaye riski yüzdesiyle uygulamak için basit bir Uzman Danışman kodunu denemeye karar verdim.
İşte kaynak kod (ana göreve konsantre olmak için gereksiz olan her şey kaldırıldı):
kodu belirtilen kitaplıktan içine ekledi. Sonuç bu koddur:
Ancak danışman hem sabit bir parti üzerinde çalıştı hem de çalışmaya devam ediyor, yani. riski dikkate alınmaz. Söyle bana, lütfen, sermaye riskinin yüzdesini kazanmak için ne yapılması gerektiğini.
Saygılarımla, Vladimir.
Yazıldığı gibi, işe yarıyor. Lot==0 ise bir satıra ihtiyacımız var, o zaman riskli lotu düşünüyoruz ve sonunda hesaplamanın değerini Lot değişkenine atıyoruz.
Dördünde, ek bir Lts değişkeni aracılığıyla böyle bir seçenek var.
bool CheckMoneyForTrade()
{
RefreshRates(); // Обновление данных
Min_Lot=MarketInfo(Symb,MODE_MINLOT); // Миним. колич. лотов
Free =AccountFreeMargin(); // Свободн средства
One_Lot=MarketInfo(Symb,MODE_MARGINREQUIRED); // Стоимость 1 лота
Step =MarketInfo(Symb,MODE_LOTSTEP); // Шаг изменен размераif (Lots > 0 ) // Если заданы лоты,то
Lts =Lots; // с ними и работаем else// % свободных средств
Lts= MathFloor (Free*Prots/One_Lot/Step)*Step; // Для открытияif (Lts < Min_Lot) Lts=Min_Lot; // Не меньше минимальнif (Lts*One_Lot > Free) // Лот дороже свободн.
{
Alert ( " Not enough money for " , Lts, " lots" );
Work= false ;
return ( false ) ; // Выход из функции()
}
return ( true );
}
Yazıldığı gibi, işe yarıyor. Lot==0 ise bir satıra ihtiyacımız var, o zaman riskli lotu düşünüyoruz ve sonunda hesaplamanın değerini Lot değişkenine atıyoruz.
Dördünde, ek bir Lts değişkeni aracılığıyla böyle bir seçenek var.
ÇOK TEŞEKKÜR EDERİM!!!
Mevcut grafik üzerinde ZigZagColor göstergesini oluşturan ve Expert Advisor'ı kapattıktan sonra silen program kodu şöyle görünür:
EA başlatma bloğunda
EA başlatmadan kaldırma bloğunda
( Bu kodu kullanacaklar için DİKKAT ! Kodun bu versiyonu orta seviyedir ve sadece gösterge ayarları için geçerlidir Inp_ZZ_Depth=80 ; Inp_ZZ_Deviation=20 ; Inp_ZZ_Backstep=0 ; diğer ayarlarla gösterge silinmez! deinitialization bloğundaki diğer ayarlarla silinecek gösterge , 80,20,0 yerine bunları belirtmeniz gerekir.)
Şimdi, nasıl yapılacağını anlamak için kalır, böylece gösterge ayarları değiştirildiğinde, aynı zamanda silinir. Bu seçeneği denedim:
Bu seçenekle, herhangi bir ayar için gösterge kaldırılır , ancak danışmanı derlerken, editör bir sayıdan bir dizgeye örtük dönüştürme hakkında 3 uyarı yazar:
Her şeyin şu değerlerle ilgili olduğundan şüpheleniyorum: "+Inp_ZZ_Depth+", "+Inp_ZZ_Deviation+", "+Inp_ZZ_Backstep+". Genel olarak, MQL5 programlama dilini daha fazla incelemeniz gerekir.
Desteğiniz için hepinize bir kez daha teşekkür ederim!!!
Saygılarımla, Vladimir.
ÇOK TEŞEKKÜR EDERİM!!!
Mevcut grafikte ZigZagColor göstergesini oluşturan ve Expert Advisor'ı kapattıktan sonra kaldıran son kod şöyle görünür:
EA başlatma bloğunda
EA başlatmadan kaldırma bloğunda
( Bu kodu kullanacaklar için DİKKAT ! Kodun bu versiyonu orta seviyedir ve sadece gösterge ayarları için geçerlidir Inp_ZZ_Depth=80 ; Inp_ZZ_Deviation=20 ; Inp_ZZ_Backstep=0 ; diğer ayarlarla gösterge silinmez! deinitialization bloğundaki diğer ayarlarla silinecek gösterge , 80,20,0 yerine bunları belirtmeniz gerekir.)
Şimdi, nasıl yapılacağını anlamak için kalır, böylece gösterge ayarları değiştirildiğinde, aynı zamanda silinir. Bu seçeneği denedim:
Bu seçenekle, herhangi bir ayar için gösterge kaldırılır , ancak danışmanı derlerken, editör bir sayıdan bir dizgeye örtük dönüştürme hakkında 3 uyarı yazar:
Her şeyin şu değerlerle ilgili olduğundan şüpheleniyorum: "+Inp_ZZ_Depth+", "+Inp_ZZ_Deviation+", "+Inp_ZZ_Backstep+". Genel olarak, MQL5 programlama dilini daha fazla incelemeniz gerekir.
Desteğiniz için hepinize bir kez daha teşekkür ederim!!!
Saygılarımla, Vladimir.
Örtülü tip döküm hakkında uyarı. katı (katı) yürütme için, örtük bir döküm bir uyarı verir.
Tipleri açıkça belirtmek gerekir. Ve MT5'te her zaman katı uygulama vardır. MT4'te, #property strict özelliklerini seçebilir ve belirtemezsiniz
Ben kendim öğrendim - ve kendim mevcut kodlardan kopyalıyorum, - Sorun şu ki nasıl heykel yaptığımı açıklayamıyorum!? - içindeki bir şey sana nasıl kör olunacağını söyler.
----------------------------------
Neyi kör ettiğimi biliyorum, orada yeterli değil, hat için başka bir Trol.
Trol eklendi
Örtülü tip döküm hakkında uyarı. katı (katı) yürütme için, örtük bir döküm bir uyarı verir.
Tipleri açıkça belirtmek gerekir. Ve MT5'te her zaman katı uygulama vardır. MT4'te, özelliklerde #property strict öğesini seçebilir ve belirtemezsiniz
Haklısın Valery! Bu formda, her şey olması gerektiği gibi çalışır. EA başlatma bloğundaki son sürüm:
EA başlatma engelleme bloğunda:
Bahşiş için teşekkürler!
Saygılarımla, Vladimir.
Oooh, çok teşekkür ederim, bu kadar çok bilgi ile çok şey yapabilirsiniz ...
Bir iş gezisine çıkıyorum , bana verilen malzemeleri araştırmak sanırım daha zor ama kodlamaya ne dersiniz... Kağıtta mümkün, güzel bir antrenman olur diye düşünüyorum...
Saygılarımla, Roman
Herkese iyi günler!
Roman bir iş gezisindeyken ve bu konuya katılmazken onun yerine MQL5 programlama dili hakkında sorular sormaya devam edeceğim. CodeBase'de Maksimum Sermaye Riski Yüzdesi kitaplığını https://www.mql5.com/en/code/2142 adresinde buldum. Alış ve satış için pozisyon açmak için basit bir Uzman Danışman kodunu denemeye karar verdim, ancak sabit bir lotla değil, maksimum sermaye riski yüzdesiyle.
İşte kaynak kod (ana göreve konsantre olmak için gereksiz olan her şey kaldırıldı):
kodu belirtilen kitaplıktan içine ekledi. Sonuç bu koddur:
Ancak danışman hem sabit bir parti üzerinde çalıştı hem de çalışmaya devam ediyor, yani. riski dikkate alınmaz. Söyle bana, lütfen, sermaye riskinin yüzdesini kazanmak için ne yapılması gerekiyor.
Saygılarımla, Vladimir.
Herkese iyi günler!
Roman bir iş gezisindeyken ve bu konuya aktif olarak katılmazken onun yerine MQL5 programlama dili hakkında sorular sormaya devam edeceğim. CodeBase'de Maksimum Sermaye Riski Yüzdesi kitaplığını https://www.mql5.com/en/code/2142 adresinde buldum. Alış ve satış pozisyonlarının açılmasını, ancak sabit bir lotla değil, maksimum sermaye riski yüzdesiyle uygulamak için basit bir Uzman Danışman kodunu denemeye karar verdim.
İşte kaynak kod (ana göreve konsantre olmak için gereksiz olan her şey kaldırıldı):
kodu belirtilen kitaplıktan içine ekledi. Sonuç bu koddur:
Ancak danışman hem sabit bir parti üzerinde çalıştı hem de çalışmaya devam ediyor, yani. riski dikkate alınmaz. Söyle bana, lütfen, sermaye riskinin yüzdesini kazanmak için ne yapılması gerektiğini.
Saygılarımla, Vladimir.
Yazıldığı gibi, işe yarıyor. Lot==0 ise bir satıra ihtiyacımız var, o zaman riskli lotu düşünüyoruz ve sonunda hesaplamanın değerini Lot değişkenine atıyoruz.
Dördünde, ek bir Lts değişkeni aracılığıyla böyle bir seçenek var.
Beyler, konunun tamamı, tartışma bir sayfa, geri kalan her şey kodlar. Belki sadece kodları girmek yeterlidir?
O zaman nasıl yardım edilir?
O zaman nasıl yardım edilir?
Yalnızca sorulanı ekle
Yazıldığı gibi, işe yarıyor. Lot==0 ise bir satıra ihtiyacımız var, o zaman riskli lotu düşünüyoruz ve sonunda hesaplamanın değerini Lot değişkenine atıyoruz.
Dördünde, ek bir Lts değişkeni aracılığıyla böyle bir seçenek var.
Teşekkürler Valery, bu gece deneyeceğim!
Saygılarımla, Vladimir.