missha32: per trovare il numero di barre attraversate da un numero di Mach, diciamo 5 ultimi incroci per il giorno corrente
Se alle 4 del mattino - non ci sono ancora molti bar per oggi. Su H4 ci sono solo 6 barre in un giorno. è necessario impostare il numero di barre da cercare o il numero di crossover.
//+-------------------------------------------------------+
//| Подсчет пересечений MA PROBA_MA.mq4|
//+-------------------------------------------------------+
#property strict
extern int Баров = 500; // Баров для подсчета пересечений МА
extern int MA_1 =10;
extern int MA_2 =100;
void OnStart()
{
int Бар, Счетчик;
double MA_1_Предыдущая, MA_2_Предыдущая,
MA_1_Следующая, MA_2_Следующая;
ObjectsDeleteAll(); // Удалить вертикальные линии
for(Счетчик=0, Бар=0; Бар<Баров; Бар++) // Начинаем с послнего бара
{
MA_1_Предыдущая = iMA(_Symbol,0,MA_1,0,MODE_EMA,PRICE_CLOSE,Бар+1);
MA_1_Следующая = iMA(_Symbol,0,MA_1,0,MODE_EMA,PRICE_CLOSE,Бар);
MA_2_Предыдущая = iMA(_Symbol,0,MA_2,0,MODE_EMA,PRICE_CLOSE,Бар+1);
MA_2_Следующая = iMA(_Symbol,0,MA_2,0,MODE_EMA,PRICE_CLOSE,Бар);
if((MA_1_Предыдущая>=MA_2_Предыдущая && MA_1_Следующая<=MA_2_Следующая) ||
(MA_1_Предыдущая<=MA_2_Предыдущая && MA_1_Следующая>=MA_2_Следующая))
{
Счетчик++;
Alert(Счетчик, " Бар = ", Бар, " T = ",Time[Бар]);
// Создать вертикальную линию
ObjectCreate( (string)Счетчик+"_"+(string)Бар,OBJ_VLINE,0,Time[Бар],0);
if(Счетчик == 5) break; // 5 линий есть - выход
}
}
}
Ho bisogno di una specie di indicatore per cambiare l'indicatore, voglio disegnare una linea da alto a basso sul grafico orario ogni 24 ore, e ottenere i dati sulla lunghezza della linea e la pendenza e poter lavorare con questi dati nel codice, non sono un grande esperto di mql4 se scrivo da zero, grande problema?
Ho una linea stirata a due coordinate, non importa come l'ho girata è solo un casino, per favore aiutatemi, forse non avrei dovuto incasinarla.
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Sei sicuro di aver guardato l'ultimo codice che hai postato? Se è così, ho bisogno di riposo... grazie.
Tracciare la variabile"c".
Sì, grazie! Vedo - ma non riesco ancora a dare un senso a questo codice - farò degli esperimenti!
Victor Nikolaev- grazie per il tuo aiuto!
Buona giornata a tutti!
Per favore, dimmi se è possibile cambiare il valore di MAJIC NUMBER in un ordine che è già stato chiuso e appare nella lista degli ordini chiusi.
Cioè, cambiare il valore di MAJIC NUMBER dopo la chiusura dell'ordine.
Se è possibile, allora quale funzione dovrebbe essere usata per cambiarlo. Non ho trovato tale funzione nel lavoro di Kim.
Grazie.Buona giornata a tutti!
Per favore, dimmi se è possibile cambiare il valore di MAJIC NUMBER in un ordine che è già stato chiuso e appare nella lista degli ordini chiusi.
Cioè, cambiare il valore di MAJIC NUMBER dopo la chiusura dell'ordine.
Se è possibile, allora quale funzione dovrebbe essere usata per cambiarlo. Non ho trovato tale funzione nel lavoro di Kim.
Grazie.Non si può. E perché ne avete bisogno - forse c'è un'altra soluzione al problema?
Non si può. Perché vorresti farlo in primo luogo - c'è un'altra soluzione al problema?
Grazie per il suggerimento.
Mentre aspettavo una risposta, mi è venuta in mente una cosa. Se non funziona, scrivo quello che mi serve.
Puoi darmi un suggerimento?
if(OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY)) // se ULTIMO ordine
if ( OrderType ()==OP_SELL)// SEL
X = OrderProfit( );// memorizza il valore di TakeProfit
if (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY)) // se ULTIMO ordine
if ( OrderType ()==OP_SELL)// SEL
se(X < 0)// e se questo Sell è stato chiuso allo stop
APRIRE UN ALTRO ORDINE
DOMANDA
Come codificare un addendum a queste condizioni.
Non solo l'ultimo ordine, ma anche il penultimo e l'ultimo ordine dovrebbero essere chiusi allo stop
e solo allora
PER APRIRE UN ALTRO ORDINE.
Grazie.
Ho dato un'occhiata. Corretto. Nel tester per 3 mesi questo è il risultato
Se alle 4 del mattino - non ci sono ancora molti bar per oggi. Su H4 ci sono solo 6 barre in un giorno. è necessario impostare il numero di barre da cercare o il numero di crossover.
//+-------------------------------------------------------+ //| Подсчет пересечений MA PROBA_MA.mq4| //+-------------------------------------------------------+ #property strict extern int Баров = 500; // Баров для подсчета пересечений МА extern int MA_1 =10; extern int MA_2 =100; void OnStart() { int Бар, Счетчик; double MA_1_Предыдущая, MA_2_Предыдущая, MA_1_Следующая, MA_2_Следующая; ObjectsDeleteAll(); // Удалить вертикальные линии for(Счетчик=0, Бар=0; Бар<Баров; Бар++) // Начинаем с послнего бара { MA_1_Предыдущая = iMA(_Symbol,0,MA_1,0,MODE_EMA,PRICE_CLOSE,Бар+1); MA_1_Следующая = iMA(_Symbol,0,MA_1,0,MODE_EMA,PRICE_CLOSE,Бар); MA_2_Предыдущая = iMA(_Symbol,0,MA_2,0,MODE_EMA,PRICE_CLOSE,Бар+1); MA_2_Следующая = iMA(_Symbol,0,MA_2,0,MODE_EMA,PRICE_CLOSE,Бар); if((MA_1_Предыдущая>=MA_2_Предыдущая && MA_1_Следующая<=MA_2_Следующая) || (MA_1_Предыдущая<=MA_2_Предыдущая && MA_1_Следующая>=MA_2_Следующая)) { Счетчик++; Alert(Счетчик, " Бар = ", Бар, " T = ",Time[Бар]); // Создать вертикальную линию ObjectCreate( (string)Счетчик+"_"+(string)Бар,OBJ_VLINE,0,Time[Бар],0); if(Счетчик == 5) break; // 5 линий есть - выход } } }distanze grandi = tendenza
Puoi darmi un suggerimento?
if(OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY)) // se ULTIMO ordine
if ( OrderType ()==OP_SELL)// SEL
X = OrderProfit( );// memorizza il valore di TakeProfit
if (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY)) // se ULTIMO ordine
if ( OrderType ()==OP_SELL)// SEL
se(X < 0)// e se questo Sell è stato chiuso allo stop
APRIRE UN ALTRO ORDINE
DOMANDA
Come codificare un addendum a queste condizioni.
Non solo l'ultimo ordine, ma anche il penultimo e l'ultimo ordine dovrebbero essere chiusi allo stop
e solo allora
PER APRIRE UN ALTRO ORDINE.
Grazie.Ho bisogno di una specie di indicatore per cambiare l'indicatore, voglio disegnare una linea da alto a basso sul grafico orario ogni 24 ore, e ottenere i dati sulla lunghezza della linea e la pendenza e poter lavorare con questi dati nel codice, non sono un grande esperto di mql4 se scrivo da zero, grande problema?
Ho una linea stirata a due coordinate, non importa come l'ho girata è solo un casino, per favore aiutatemi, forse non avrei dovuto incasinarla.
#property indicator_chart_window //---- input parameters extern int CountDays =22; extern int GMT =0; extern color pivot =Gold; extern color day =Yellow; extern color metka =MidnightBlue; //---- indicator buffers double range[]; double ny_close[]; double low[]; double high[]; datetime time1; datetime time2; datetime ny_time[]; int shift, num; int ny_shift[]; datetime prevDay=0; bool fTime; // ---- void ObjDel() { if (ObjectsTotal() > 0) for (num=0;num<=CountDays;num++) { ObjectDelete("PPw["+num+"]"); } ObjectDelete("mPw"); } // ---- void PlotLine(string name,double value,double value1,double line_color,double style) { double valueN=NormalizeDouble(value,Digits); double valueN1=NormalizeDouble(value1,Digits); bool res = ObjectCreate(name,OBJ_TREND,0,time1,valueN,time2,valueN1); ObjectSet(name, OBJPROP_WIDTH, 1); ObjectSet(name, OBJPROP_STYLE, style); ObjectSet(name, OBJPROP_RAY, false); ObjectSet(name, OBJPROP_BACK, true); ObjectSet(name, OBJPROP_COLOR, line_color); } //*********** void PlotVLine(string name,double tm,double line_color) { bool res = ObjectCreate(name,OBJ_VLINE,0,tm,0); ObjectSet(name, OBJPROP_WIDTH, 0); ObjectSet(name, OBJPROP_STYLE, 2); ObjectSet(name, OBJPROP_COLOR, line_color); } //*********** void PlotPrice(string name, double value, double line_color) { double valueN=NormalizeDouble(value,Digits); bool res = ObjectCreate(name, OBJ_ARROW, 0, time2,valueN); ObjectSet(name, OBJPROP_COLOR, line_color); ObjectSet(name, OBJPROP_WIDTH, 1); ObjectSet(name, OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE); } //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { fTime = true; IndicatorBuffers(2); SetIndexBuffer(0,range); SetIndexBuffer(1,ny_close); return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { ObjDel(); Comment(""); return(0); } //+------------------------------------------------------------------+ //| LNX_Pivots_v3.1 | //+------------------------------------------------------------------+ int start() { int i; double P; datetime cDay = iTime(NULL,PERIOD_D1,0) + (GMT-Period()/60.0)*3600; if (cDay != prevDay || fTime) { ObjDel(); ArrayResize(ny_time,CountDays+1); ArrayResize(ny_shift,CountDays+1); ArrayResize(high,CountDays+1); ArrayResize(low,CountDays+1); ArrayResize(range,CountDays+1); for (shift=0;shift<=CountDays;shift++) { ny_time[shift] = iTime(NULL,PERIOD_D1,shift) + (GMT-Period()/60.0)*3600; ny_shift[shift] = iBarShift(NULL,0,ny_time[shift]); ny_close[shift] = iClose(NULL,0,ny_shift[shift]); } for (shift=0;shift<=CountDays-1;shift++) { int length = ny_shift[shift+1]-ny_shift[shift]; high[shift] = High[iHighest(NULL,0,MODE_HIGH,length,ny_shift[shift])]; low[shift] = Low[iLowest(NULL,0,MODE_LOW,length,ny_shift[shift])]; range[shift] = high[shift] - low[shift]; } for (shift=0;shift<=CountDays-1;shift++) { P = (ny_close[shift]+high[shift]+low[shift])/3; time1 = ny_time[shift]+Period()*60; if (shift==0) { time2 = ny_time[shift] + 24*3600+Period()*60 ; PlotVLine("pV0",time2,day); PlotPrice("mPw",P,metka); } else time2 = ny_time[shift-1]+Period()*60; PlotVLine("pV["+shift+"]",time1,day); int pstyle=0; PlotLine("PPw["+shift+"]",P,P,pivot,pstyle); // *********две координаты******* } fTime = false; prevDay = cDay; } return(0); } //+------------------------------------------------------------------+