Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 118
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Artyom, ho lanciato il codice sopra.
Copia lo stesso link al tuo codice che hai lanciato sopra e incollalo nel tuo post quando fai riferimento a qualsiasi post dei partecipanti. O pensi di volerlo trovare senza sapere così tanto dove si trova e di cosa si tratta?
Qui c'è un link al tuo post a cui sto rispondendo: #1170. È nell'area delle azioni accanto al tuo nickname.
Copia lo stesso link al tuo codice che hai lanciato sopra e incollalo nel tuo messaggio quando ti riferisci a un messaggio di uno dei partecipanti. O pensi di volerlo trovare senza sapere così tanto dove si trova e di cosa si tratta?
https://www.mql5.com/ru/forum/160683/page109
1082 messaggio
Non so come su questa risorsa, ma di solito un moderatore vede tutti i post di qualsiasi utente, comprese le modifiche.
Come fare un simile collegamento a un post non ne ho idea.
https://www.mql5.com/ru/forum/160683/page109
1082 messaggio
Non conosco questa risorsa, ma di solito un moderatore vede tutti i post di qualsiasi utente, comprese le modifiche.
Come fare un simile collegamento a un post non ne ho idea.
https://www.mql5.com/ru/forum/160683/page109
1082 messaggio
Allegalo qui come codice, usando il pulsante SRC. Allora puoi tranquillamente guardare il codice senza doverlo scaricare e metterlo nella cartella corretta del terminale - perché rendere la vita difficile a chi ti può aiutare?
No, non vuoi scaricare.
Allega qui come codice usando il pulsante SRC. Quindi puoi tranquillamente guardare il codice senza doverlo scaricare e metterlo nella cartella giusta del terminale : perché complicare la vita a chi può aiutarti?
Per favore, solo che non capisco come controllarlo senza scaricarlo sul mio terminale. Per favore, spiega anche qual è il vantaggio di lanciare qui pezzi di codice che intasano la pagina.
//| Close_MA.mq4 |
//| Copyright 2016, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
extern bool Uslovie1= false ; //Uslovie 4 6+50 MA
extern bool OpenOrders= false ; //+---Открыть ордер
extern double Lots= 0.01 ; //Oбьем открываемого ордера
extern const string Настройки_работы_советника= "" ;
extern int Period1= 6 ; //Период 1МА
extern ENUM_APPLIED_PRICE PRICE1= PRICE_MEDIAN ; // 1МА По цене
extern int Period2= 50 ; //Период 2МА
extern ENUM_APPLIED_PRICE PRICE2= PRICE_MEDIAN ; // 2МА По цене
extern int Period3= 1000 ; //Период 3МА
extern ENUM_APPLIED_PRICE PRICE3= PRICE_MEDIAN ; // 3МА По цене
extern uint X= 1 ; // отклонение от ма, пунктов
extern bool PlaySound = false ;
extern int M= 1000 ; // миллисекунды в Sleep
extern int R; // раз повторения музыки
extern int count= 0 ;
extern int Step= 500 ; // счетчик тиков 500макс.
int i; // исходный счетчик ордеров
int p= 0 ; // внутренняя для playSound
bool y = false ; // для удобства сравнений условий 1,2,3,4,5,6
bool dummy; // для выхода функций в переменную
int ticket = 0 ; // тикет открываемого ордера
int Magic = 222 ;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnTick ()
{
{
if ( Bars < 801 || ( IsTradeAllowed ()== false )) //--- Проверим достаточна ли в истории баров для анализа и разрешение торговли
return ;
}
//+----------------------------------------------------------------
double ma1= NormalizeDouble ( iMA ( NULL , 0 ,Period1, 0 , MODE_SMA ,PRICE1, 0 ), 5 );
double ma2= NormalizeDouble ( iMA ( NULL , 0 ,Period2, 0 , MODE_SMA ,PRICE1, 0 ), 5 ); //три заданных параметра ма
double ma3= NormalizeDouble ( iMA ( NULL , 0 ,Period3, 0 , MODE_SMA ,PRICE1, 0 ), 5 );
//+----------------------------------------------------------------- Открытие ордеров
//+----Купить
{
if ( MathAbs ( Bid -ma3)< 1000 * Point () && (myOrdersTotal()== false ))
{
ticket= OrderSend ( Symbol (), OP_BUY ,Lots, Ask , 50 , 0 , 0 , "" ,Magic, 0 , clrLightGray ); //+------отправка 1 ордера
HLineCreate();
}
else if (( Ask >=(FindLastOrderOpenPrice()+(Step* _Point )))&& myOrdersTotal()) //+------------если ордер в плюс
{
ticket= OrderSend ( Symbol (), OP_BUY ,Lots, Ask , 50 , 0 , 0 , "" ,Magic, 0 , clrLightGray );
HLineMove();
}
else if (( Ask <=(FindLastOrderOpenPrice()-(Step* _Point )))&& myOrdersTotal()) //+------------если ордер вплюс
{
ticket= OrderSend ( Symbol (), OP_BUY ,Lots, Ask , 50 , 0 , 0 , "" ,Magic, 0 , clrLightGray );
HLineMove();
}
else if (ticket== 0 )
{
return ;
}
/*
//+----Продать
if(MathAbs(Bid-ma3)>1000*Point() && (myOrdersTotal()==false))
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,50,0,0,"",Magic,0,clrLightGray);//+------отправка 1 ордера
HLineCreate1();
}
else if ((Ask>=(FindLastOrderOpenPrice()+(Step*_Point)))&& myOrdersTotal())//+------------если ордер в минус
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,50,0,0,"",Magic,0,clrLightGray);
HLineMove1();
}
else if ((Ask<=(FindLastOrderOpenPrice()-(Step*_Point)))&& myOrdersTotal())//+------------если ордер вплюс
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,50,0,0,"",Magic,0,clrLightGray);
HLineMove1();
}
else if(ticket==0)
{
return;
} */
}
//+------------------------------------------------------------------Условия
if (Uslovie1== true ) //Bid+ma800
{
if (( Bid >=ma3-X* Point && Bid <ma3) || ( Bid <=ma3+X* Point && Bid >ma3))
{
{y= true ;}
}
}
//+------------------------------------------------------------------закрыть покупки или продажи
if ((y== true ) && (myOrdersTotal()== true )) //продажа
{
dummy=( OrderClose ( OrderTicket (), OrderLots (), Ask , 0 ,White));
}
if ((y== true ) && (myOrdersTotal()== false ))
{
dummy= false ;
HLineDelete();
HLineDelete1();
// ExpertRemove();
}
}
//+------------------------------------------------------------------+
bool myOrdersTotal() //если ордера есть
{
for (i= OrdersTotal ()- 1 ; i>= 0 ; i--) // цикл будет работать пока не останется ордеров
{
if ((( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))== true ) && OrderSymbol ()== Symbol () && ( OrderType ()< 2 ))
{
return true ;
}
}
return false ;
}
//-------------------------------------------------------------------
double FindLastOrderOpenPrice()
{
double oldorderopenprice= 0 ;
int oldticket= 0 ;
ticket= 0 ;
for (i= OrdersTotal ()- 1 ; i>= 0 ; i--) // цикл будет работать пока не останется ордеров
{
if (( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) && OrderSymbol ()== Symbol () && ( OrderMagicNumber ()==Magic)
&& ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ))
{
oldticket= OrderTicket ();
if (oldticket>=ticket)
{
ticket=oldticket;
oldorderopenprice= OrderOpenPrice ();
}
}
}
return (oldorderopenprice);
}
//-------------------------------------------------------------------
//+------------------------------------------------------ часть Buy bool HLineCreate();
bool HLineCreate( const long chart_ID= 0 , // ID графика
const string name= "Buy" , // имя линии
const int sub_window= 0 , // номер подокна
double price1= 0 , // цена линии
const color clr= clrAzure , // цвет линии
const ENUM_LINE_STYLE style= STYLE_DASHDOT , // стиль линии
const int width= 3 , // толщина линии
const bool back= false , // на заднем плане
const bool selection= true , // выделить для перемещений
const bool hidden= false , // скрыт в списке объектов
const long z_order= 0 ) // приоритет на нажатие мышью
{
if (!price1)
price1=FindLastOrderOpenPrice();
ResetLastError ();
if (! ObjectCreate (chart_ID,name, OBJ_HLINE ,sub_window, 0 ,price1))
{
Print ( __FUNCTION__ ,
": не удалось создать горизонтальную линию! Код ошибки = " , GetLastError ());
return ( false );
//--- установим цвет линии
ObjectSetInteger (chart_ID,name, OBJPROP_COLOR ,clr);
//--- установим стиль отображения линии
ObjectSetInteger (chart_ID,name, OBJPROP_STYLE ,style);
//--- установим толщину линии
ObjectSetInteger (chart_ID,name, OBJPROP_WIDTH ,width);
//--- отобразим на переднем (false) или заднем (true) плане
ObjectSetInteger (chart_ID,name, OBJPROP_BACK ,back);
ObjectSetInteger (chart_ID,name, OBJPROP_SELECTABLE ,selection);
ObjectSetInteger (chart_ID,name, OBJPROP_SELECTED ,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
ObjectSetInteger (chart_ID,name, OBJPROP_HIDDEN ,hidden);
//--- установим приоритет на получение события нажатия мыши на графике
ObjectSetInteger (chart_ID,name, OBJPROP_ZORDER ,z_order);
ChartRedraw ();
}
return ( true );
}
//+------------------------------------------------------------------+ HLineMove();
bool HLineMove( const long chart_ID= 0 , // ID графика
const string name= "Buy" , // имя линии
double price1= 0 ) // цена линии
{
if (!price1)
price1=FindLastOrderOpenPrice();
ResetLastError ();
if (! ObjectMove (chart_ID,name, 0 , 0 ,price1))
{
Print ( __FUNCTION__ ,
": не удалось переместить горизонтальную линию! Код ошибки = " , GetLastError ());
return ( false );
}
return ( true );
}
//+------------------------------------------------------------------+ bool HLineDelete();
bool HLineDelete( const long chart_ID= 0 , // ID графика
const string name= "Buy" ) // имя линии
{
ResetLastError ();
if (! ObjectDelete (chart_ID,name))
{
Print ( __FUNCTION__ ,
": не удалось удалить горизонтальную линию! Код ошибки = " , GetLastError ());
return ( false );
}
return ( true );
}
//+-----------------------------------------------------------------+
//+-----------часть SELL bool HLineCreate1
//+------------------------------------------------------
//+------------------------------------------------------ bool HLineCreate1();
bool HLineCreate1( const long chart_ID= 0 , // ID графика
const string name= "Sell" , // имя линии
const int sub_window= 0 , // номер подокна
double price2= 0 , // цена линии
const color clr= clrRed , // цвет линии
const ENUM_LINE_STYLE style= STYLE_DASHDOT , // стиль линии
const int width= 2 , // толщина линии
const bool back= false , // на заднем плане
const bool selection= true , // выделить для перемещений
const bool hidden= false , // скрыт в списке объектов
const long z_order= 0 ) // приоритет на нажатие мышью
{
if (!price2)
price2=FindLastOrderOpenPrice();
ResetLastError ();
if (! ObjectCreate (chart_ID,name, OBJ_HLINE ,sub_window, 0 ,price2))
{
Print ( __FUNCTION__ ,
": не удалось создать горизонтальную линию! Код ошибки = " , GetLastError ());
return ( false );
//--- установим цвет линии
ObjectSetInteger (chart_ID,name, OBJPROP_COLOR ,clr);
//--- установим стиль отображения линии
ObjectSetInteger (chart_ID,name, OBJPROP_STYLE ,style);
//--- установим толщину линии
ObjectSetInteger (chart_ID,name, OBJPROP_WIDTH ,width);
//--- отобразим на переднем (false) или заднем (true) плане
ObjectSetInteger (chart_ID,name, OBJPROP_BACK ,back);
ObjectSetInteger (chart_ID,name, OBJPROP_SELECTABLE ,selection);
ObjectSetInteger (chart_ID,name, OBJPROP_SELECTED ,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
ObjectSetInteger (chart_ID,name, OBJPROP_HIDDEN ,hidden);
//--- установим приоритет на получение события нажатия мыши на графике
ObjectSetInteger (chart_ID,name, OBJPROP_ZORDER ,z_order);
ChartRedraw ();
}
return ( true );
}
//+------------------------------------------------------------------+ HLineMove1();
bool HLineMove1( const long chart_ID= 0 , // ID графика
const string name= "Sell" , // имя линии
double price2= 0 ) // цена линии
{
if (!price2)
price2=FindLastOrderOpenPrice();
ResetLastError ();
if (! ObjectMove (chart_ID,name, 0 , 0 ,price2))
{
Print ( __FUNCTION__ ,
": не удалось переместить горизонтальную линию! Код ошибки = " , GetLastError ());
return ( false );
}
return ( true );
}
//+------------------------------------------------------------------+ bool HLineDelete1();
bool HLineDelete1( const long chart_ID= 0 , // ID графика
const string name= "Sell" ) // имя линии
{
ResetLastError ();
if (! ObjectDelete (chart_ID,name))
{
Print ( __FUNCTION__ ,
": не удалось удалить горизонтальную линию! Код ошибки = " , GetLastError ());
return ( false );
}
return ( true );
}
METTERLO QUI DENTRO:
Artyom, è per il video particolarmente dotato?
Per favore, solo che non capisco come controllarlo senza caricarlo sul mio terminale. Inoltre, per favore, spiega qual è il vantaggio di gettare pezzi di codice che intasano la pagina qui.
trader781, qual è la tua domanda sul codice?
Il vantaggio dei pezzi di codice è che, per esempio, ho un file di prova dove semplicemente copio un pezzo di codice dal forum e lo incollo nel file. Altrimenti, devi scaricare il tuo file con il codice, poi aprire una cartella nella cartella e incollare il tuo file, dopo di che devi cancellarlo. Senti la differenza?
Per favore, solo che non capisco come controllarlo senza caricarlo sul mio terminale. Inoltre, per favore, spiegate qual è il vantaggio di buttare pezzi di codice qui, intasando la pagina.
In realtà la gente di solito fa un codice minimo per riprodurre l'errore che lei sostiene.
Ma a giudicare dal codice, non si capisce bene cosa faccia.
Avete dei parametri nelle vostre funzioni che possono essere passati in esse. In particolare il colore della linea. Ma li avete fatti tutti con valori predefiniti e non vi chiedete "cosa c'è dentro la mia funzione, quali parametri prende?" ma cominciate a dire che il terminale fallisce. Va bene...
Rimuovete tutti i parametri di default dalla funzione che crea la linea - il compilatore vi farà pensare ad impostarli quando chiamate la funzione - questo è necessario per la vostra educazione. E rimuovete le funzioni duplicate - quelle dove mettete 1 alla fine del nome - usate una funzione con parametri diversi.
trader781, qual è esattamente la domanda sul codice?
Il vantaggio dei pezzi di codice è che, per esempio, ho un file di prova in cui devo solo copiare un pezzo di codice dal forum e incollarlo nel file. Altrimenti, devi scaricare il tuo file con il codice, poi aprire una cartella nella cartella e incollare il tuo file, dopo di che devi cancellarlo. Senti la differenza?
ok, ho capito
Divisione del cazzo ...
Capisco che al momento è tutt'altro che accettabile, ma potete mostrarmi perché nel caso di un acquisto non posso ottenere una datalinea tratteggiata di un colore specificato, anche se bianca o solo verde si dà tranquillamente.
e
doppio OP = 5.00000
TP = (OP/100);
Stampa("TP= ",TP);
2017.02.09 21:36:03.650 2015.01.05 04:00:00 martin H1-1 USDJPY,H1: TP= 0,5
non capisco da quando si divide 5 per 100 è 0,5