Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 58
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Kendim kod yazmayı öğrenmek istiyorum.. Bu yüzden tavsiye istemeye karar verdim. Belki biri örnek verir diye düşündüm.. Teşekkürler!
Müşteri, grafikten çıkarılmış olsa bile EA'nın ticaret açmaya devam ettiğinden şikayet ediyor. Bu aynı olamaz mı?
Kaldırılmışsa ve doğru yazılmışsa - olmamalıdır. Başlatma kodundan arındırma koduyla boşaltma - 1. EA takılırsa... bunu çözmeniz gerekir...
Pencereyi Expert Advisor ile kapatırsanız, Expert Advisor, başlatmadan arındırma kodu - 4 ile kaldırılmalıdır:
REASON_CHARTCLOSE
4
Grafik kapatıldı
https://www.mql5.com/ru/docs/constants/namedconstants/uninit
peki, tam orada meta alıntı alıntıları hatırladığım kadarıyla sızdıran alıntılar ve kaliteli tixtory
En azından ne tür çizgiler istediğinizi anlamak için bir ekran görüntüsü
En azından hangi satırları birleştirmek istediğinizi anlamak için bir ekran görüntüsü.
En azından hangi satırları birleştirmek istediğinizi anlamak için bir ekran görüntüsü. Cevabın için teşekkürler! Enstrümanların iki üst sırasını MT4'te bir araya getirmek istiyorum.
dT değişkeninin kırmızı rengi ne anlama gelebilir?
dT değişkeninin kırmızı rengi ne anlama gelebilir?
double Lots=Margin_Percent/ MarketInfo ( Symbol (), MODE_MARGINREQUIRED ); //Определение общего количества лотов
double Lots_Volume=( MathFloor (Lots)+ MarketInfo ( Symbol (), MODE_LOTSTEP ));
double MacdCurrent= iMACD ( NULL , 0 ,Fast_EMA_Period,Slow_EMA_Period,Signal_Period, PRICE_CLOSE , MODE_MAIN , 1 ); //Параметры MACD основной линии текущего бара
double MacdPrevious1= iMACD ( NULL , 0 ,Fast_EMA_Period,Slow_EMA_Period,Signal_Period, PRICE_CLOSE , MODE_MAIN , 2 ); //Параметры MACD основной линии предыдущего бара
double MacdPrevious2= iMACD ( NULL , 0 ,Fast_EMA_Period,Slow_EMA_Period,Signal_Period, PRICE_CLOSE , MODE_MAIN , 3 ); //Параметры MACD основной линии со смещением на 2 бара
double StopLoss= iSAR ( NULL , 0 ,Step_PSAR,Maximum_PSAR, 0 ); //Параметры Трейлинг стоп по параметрам ParabolicSAR текущего бара
double Previous_StopLoss= iSAR ( NULL , 0 ,Step_PSAR,Maximum_PSAR, 1 ); //Параметры СтопЛосс по параметрам ParabolicSAR предыдущего бара
double CurrentPSAR= iSAR ( NULL , 0 ,Step_PSAR,Maximum_PSAR, 1 ); //Параметры СтопЛосс по параметрам ParabolicSAR предыдущего бара
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
static datetime New_Time= TimeCurrent (); // Время текущего бара
bool New_Bar= false ; // Флаг нового бара
int ticket,total,cnt;
//---------------------------------------------------------------------------
total= OrdersTotal (); // Опредление количства ордеров
if (total< 1 )
{
//--- нет открытых ордеров
if (Margin_Percent< MarketInfo ( Symbol (), MODE_MARGINREQUIRED )*( MarketInfo ( Symbol (), MODE_MINLOT )))
//Проверка на наличие денежных средств для открытия минимального лота
{
Print ( "Не хватает средств. Свободные средства = " , AccountFreeMargin ());
return ;
}
if ( Time [ 0 ]==New_Time) // Сравниваем время
{
New_Bar= true ; // Поймался новый бар
if (New_Bar== false ) // Если бар не новый..
return ; // ..то уходим
}
//Определение количества лотов
if (Lots>Lots_Volume)
Lots=Lots_Volume;
else if (Lots<Lots_Volume)
Lots= MathFloor (Lots);
return ;
//--- условие для открытия длинной позиции (BUY)
if (CurrentPSAR< iOpen ( NULL , 0 , 1 ) &&
((MacdPrevious1> 0 && MacdPrevious2< 0 ) ||
(MacdCurrent> 0 && MacdPrevious1< 0 ) ||
(MacdCurrent> 0 && MacdPrevious1== 0 && MacdPrevious2< 0 )||
(MacdCurrent> 0 && MacdPrevious1== 0 && MacdPrevious2== 0 )))
{
ticket= OrderSend ( Symbol (), OP_BUY ,Lots, Ask , 3 ,StopLoss+ MarketInfo ( Symbol (), MODE_STOPLEVEL )* Point , 0 , NULL ,MAGICNUMBER, 0 ,Green);
if (ticket> 0 ) //проверка отрытия позиции
{
if ( OrderSelect (ticket, SELECT_BY_TICKET , MODE_TRADES ))
Print ( "BUY ордер открыт : " , OrderOpenPrice ());
else Print ( "Ошибка открытия ордера BUY : " , GetLastError ());
return ;
}
}
//--- условие для открытия короткой позиции (SELL)
if (CurrentPSAR> iOpen ( NULL , 0 , 1 ) &&
((MacdCurrent< 0 && MacdPrevious1> 0 ) ||
(MacdPrevious1< 0 && MacdPrevious2> 0 ) ||
(MacdCurrent< 0 && MacdPrevious1< 0 && MacdPrevious2> 0 ) ||
(MacdCurrent< 0 && MacdPrevious1== 0 && MacdPrevious2== 0 )))
{
ticket= OrderSend ( Symbol (), OP_SELL ,Lots, Bid , 3 ,StopLoss- MarketInfo ( Symbol (), MODE_STOPLEVEL )* Point , 0 , NULL ,MAGICNUMBER, 0 ,Red);
if (ticket> 0 ) //проверка открытия позиции
{
if ( OrderSelect (ticket, SELECT_BY_TICKET , MODE_TRADES ))
Print ( "SELL ордер открыт : " , OrderOpenPrice ());
else Print ( "Ошибка открытия ордера SELL : " , GetLastError ());
return ;
}
}
return ; //--- выход из блока "нет открытых ордеров"
}
//--- важно правильно войти в рынок, но более важно правильно из него выйти
for (cnt= 0 ;cnt<total;cnt++)
{
if (! OrderSelect (cnt, SELECT_BY_POS , MODE_TRADES ))
continue ;
if ( OrderMagicNumber ()==MAGICNUMBER && // проверка магического номера ордера
OrderSymbol ()== Symbol ()) // проверка символа ордера
{
//--- длинная позиция открыта
if ( OrderType ()== OP_BUY )
{
//--- должен быть закрыт?
if (CurrentPSAR> iOpen ( NULL , 0 , 1 ) &&
((MacdCurrent< 0 && MacdPrevious1> 0 ) ||
(MacdPrevious1< 0 && MacdPrevious2> 0 ) ||
(MacdCurrent< 0 && MacdPrevious1< 0 && MacdPrevious2> 0 ) ||
(MacdCurrent< 0 && MacdPrevious1== 0 && MacdPrevious2== 0 )))
{
//--- закрытие ордера и выход
if ( OrderClose ( OrderTicket (), OrderLots (), Bid , 3 ,Violet))
{
Print ( "Ордер закрыт" );
ticket= OrderSend ( Symbol (), OP_SELL ,Lots, Bid , 3 ,StopLoss- MarketInfo ( Symbol (), MODE_STOPLEVEL )* Point , 0 , NULL ,MAGICNUMBER, 0 ,Red);
if (ticket> 0 ) //проверка открытия позиции
{
if ( OrderSelect (ticket, SELECT_BY_TICKET , MODE_TRADES ))
Print ( "SELL ордер открыт : " , OrderOpenPrice ());
else Print ( "Ошибка открытия ордера SELL : " , GetLastError ());
return ;
}
}
else Print ( "Ошибка закрытия ордера " , GetLastError ());
}
//------------------Модификация ордера по СтопЛоссу
else if (StopLoss>Previous_StopLoss && StopLoss< iOpen ( NULL , 0 , 0 ))
{
if ( OrderModify ( OrderTicket (), OrderOpenPrice (),StopLoss+ MarketInfo ( Symbol (), MODE_STOPLEVEL )* Point , 0 , 0 ,Blue))
Print ( "Цена Stop Loss ордера успешно модифицирована." );
else Print ( "Ошибка модификации ордера. Код ошибки=" , GetLastError ());
return ;
}
return ;
}
// идём на короткую позицию
else if ( OrderType ()== OP_SELL )
{
//--- должен быть закрыт?
if (CurrentPSAR< iOpen ( NULL , 0 , 1 ) &&
((MacdPrevious1> 0 && MacdPrevious2< 0 ) ||
(MacdCurrent> 0 && MacdPrevious1< 0 ) ||
(MacdCurrent> 0 && MacdPrevious1== 0 && MacdPrevious2< 0 )||
(MacdCurrent> 0 && MacdPrevious1== 0 && MacdPrevious2== 0 )))
{
//--- закрытие ордера и выход
if ( OrderClose ( OrderTicket (), OrderLots (), Ask , 3 ,Violet))
{
Print ( "Ордер закрыт" );
ticket= OrderSend ( Symbol (), OP_BUY ,Lots, Ask , 3 ,StopLoss+ MarketInfo ( Symbol (), MODE_STOPLEVEL )* Point , 0 , NULL ,MAGICNUMBER, 0 ,Green);
if (ticket> 0 ) //проверка отрытия позиции
{
if ( OrderSelect (ticket, SELECT_BY_TICKET , MODE_TRADES ))
Print ( "BUY ордер открыт : " , OrderOpenPrice ());
else Print ( "Ошибка открытия ордера BUY : " , GetLastError ());
return ;
}
}
else Print ( "Ошибка закрытия ордера " , GetLastError ());
}
//-----------------Модификация ордера по СтопЛоссу
else if (StopLoss<Previous_StopLoss && StopLoss> iOpen ( NULL , 0 , 0 ))
{
if ( OrderModify ( OrderTicket (), OrderOpenPrice (),StopLoss- MarketInfo ( Symbol (), MODE_STOPLEVEL )* Point , 0 , 0 ,Blue))
Print ( "Цена Stop Loss ордера успешно модифицирована." );
else Print ( "Ошибка модификации ордера. Код ошибки=" , GetLastError ());
return ;
}
}
}
}
//------
}
//-------------------------------------------------------------------------------------------------------
İnsanlar! Söylemek. Test cihazı hata veriyor: 2017.02.08 18:24:43.751 TestGenerator: eşleşmeyen veri hatası (2016.07.27 19:30'da düşük değer 1.09860'a en düşük zaman diliminden ulaşılamıyor, düşük fiyat 1.09880 uyumsuzlukları)