Ragazzi, potete darmi un indizio? Questo sito ha uno script chiamato "SendOrderMultiLock". Mi interessa sapere se si può fare in modo che si accenda in un dato momento?
Visto che hai preso l'iniziativa, proviamo a trovare un codice che ci segnali ogni minuto con informazioni sul prezzo di apertura di una candela di un minuto su un grafico a cinque minuti (con la possibilità di lavorare in un tester). Propongo una mia variante:
// функция записывает в массив result[] цены открытия минутных баров // внутри бара с индексом shift текущего таймфрейма. Возвращаемое значение - количество соответствующих минутных баров// int M1_OpenPrices(int shift, double &result[])
{
int n=0;
ArrayResize(result,n);
int sh, sh1 = iBarShift(0, PERIOD_M1, Time[shift]);
for(sh=sh1;sh>=0;sh--)
{
if(iBarShift(0, 0, iTime(0,PERIOD_M1,sh))!=shift) break;
n++;
ArrayResize(result,n);
result[n-1] = iOpen(Symbol(),PERIOD_M1,sh1);
}
return(n);
}
Chi sa come fare in modo che il colore delle linee di take profit differisca sul grafico dal colore dello stop loss automaticamente? e come far apparire un'icona sul grafico nel luogo in cui viene piazzato l'ordine?
Aiutatemi a capire. Costruisco il MACD sulla barra precedente (i+1). Trovo i valori massimi e minimi visibili nella finestra del grafico MACD. Metto in Commento i valori massimi, minimi e attuali delle linee principali e di segnale. Qualcuno può aiutarmi a capirlo.
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_width1 2
//--- buffers
double Macd1Buffer[];
double Signal1Buffer[];
//--- for one bar
datetime last;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,Macd1Buffer);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,Signal1Buffer);
IndicatorDigits(Digits+1);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
Comment("");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
if(last>=Time[0]) return;
double max_M1=-0.01,min_M1=0.01,
max_S1=-0.01,min_S1=0.01,
max1=-0.01,min1=0.01;
int bars_counted=WindowBarsPerChart()-1,
limit;
limit=bars_counted;
//---- macd counted in the 1-st buffer
for( int i=0; i<limit; i++)
{
Macd1Buffer[i]=iMA(NULL,0,6,0,MODE_EMA,PRICE_CLOSE,i+1)-iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,i+1);
max_M1=MathMax(Macd1Buffer[i],max_M1);
min_M1=MathMin(Macd1Buffer[i],min_M1);
}
//---- macd counted in the 2-nd buffer
for( i=0; i<limit; i++)
{
Signal1Buffer[i]=iMAOnArray(Macd1Buffer,Bars,5,0,MODE_SMA,i);
max_S1=MathMax(Signal1Buffer[i],max_S1);
min_S1=MathMin(Signal1Buffer[i],min_S1);
}
max1=MathMax(max_M1,max_S1);
min1=MathMin(min_M1,min_S1);
Comment( "\n"," Баров = ",WindowBarsPerChart()-1,
"\n"," max1 = ",max1,
"\n"," min1 = ",min1,
"\n"," Macd1Buffer = ",Macd1Buffer[i],
"\n"," Signal1Buffer = ",Signal1Buffer[i]);
last=Time[0];
//----
return(0);
}
//+------------------------------------------------------------------+
Aiutatemi a capire. Costruisco il MACD sulla barra precedente (i+1). Trovo i valori massimi e minimi visibili nella finestra del grafico MACD. Metto in Commento i valori massimi, minimi e attuali delle linee principali e di segnale. Qualcuno può aiutarmi a capirlo.
Il tipo di dati doppio viene stampato con 4 cifre decimali dopo il punto. Per emettere numeri con maggiore precisione, dovete usare la funzione DoubleToStr().
Fai la domanda correttamente.
Vi darà una risposta.
Visto che hai preso l'iniziativa, proviamo a trovare un codice che ci segnali ogni minuto con informazioni sul prezzo di apertura di una candela di un minuto su un grafico a cinque minuti (con la possibilità di lavorare in un tester). Propongo una mia variante:
Questa opzione è migliore.
Grazie.
Aiutatemi a capire. Costruisco il MACD sulla barra precedente (i+1). Trovo i valori massimi e minimi visibili nella finestra del grafico MACD. Metto in Commento i valori massimi, minimi e attuali delle linee principali e di segnale. Qualcuno può aiutarmi a capirlo.
#property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 Lime #property indicator_color2 Red #property indicator_width1 2 //--- buffers double Macd1Buffer[]; double Signal1Buffer[]; //--- for one bar datetime last; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,Macd1Buffer); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,Signal1Buffer); IndicatorDigits(Digits+1); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- Comment(""); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { if(last>=Time[0]) return; double max_M1=-0.01,min_M1=0.01, max_S1=-0.01,min_S1=0.01, max1=-0.01,min1=0.01; int bars_counted=WindowBarsPerChart()-1, limit; limit=bars_counted; //---- macd counted in the 1-st buffer for( int i=0; i<limit; i++) { Macd1Buffer[i]=iMA(NULL,0,6,0,MODE_EMA,PRICE_CLOSE,i+1)-iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,i+1); max_M1=MathMax(Macd1Buffer[i],max_M1); min_M1=MathMin(Macd1Buffer[i],min_M1); } //---- macd counted in the 2-nd buffer for( i=0; i<limit; i++) { Signal1Buffer[i]=iMAOnArray(Macd1Buffer,Bars,5,0,MODE_SMA,i); max_S1=MathMax(Signal1Buffer[i],max_S1); min_S1=MathMin(Signal1Buffer[i],min_S1); } max1=MathMax(max_M1,max_S1); min1=MathMin(min_M1,min_S1); Comment( "\n"," Баров = ",WindowBarsPerChart()-1, "\n"," max1 = ",max1, "\n"," min1 = ",min1, "\n"," Macd1Buffer = ",Macd1Buffer[i], "\n"," Signal1Buffer = ",Signal1Buffer[i]); last=Time[0]; //---- return(0); } //+------------------------------------------------------------------+Aiutatemi a capire. Costruisco il MACD sulla barra precedente (i+1). Trovo i valori massimi e minimi visibili nella finestra del grafico MACD. Metto in Commento i valori massimi, minimi e attuali delle linee principali e di segnale. Qualcuno può aiutarmi a capirlo.
Il tipo di dati doppio viene stampato con 4 cifre decimali dopo il punto. Per emettere numeri con maggiore precisione, dovete usare la funzione DoubleToStr().
Esempio:
I dati di tipo doppio vengono emessi con 4 cifre decimali dopo il punto. Per produrre numeri con maggiore precisione, usate la funzione DoubleToStr().
I dati di tipo doppio vengono emessi con 4 cifre decimali dopo il punto. Per produrre numeri con maggiore precisione, usate la funzione DoubleToStr().
esempio: