Sì, è necessario avere un codice open source o un'implementazione pronta a partire.
Quando imposto il colore clrNONE nel tester, il colore viene ancora visualizzato! Quindi clrNONE non funziona nel tester? Non posso controllare nella vita reale - è il fine settimana...
Se imposto un colore qualsiasi invece di clrNONE, questo colore viene visualizzato, ma il valore vuoto = non funziona... strano...
Risposta: anche ricaricare ripetutamente la macro)
Ma è meglio usare solo l'operatore + per le stringhe e convertire tutto in stringhe, allora non c'è bisogno di una funzione (e macro) con molti parametri
Grazie. Non sapevo che la macro potesse essere ricaricata.
su un altro server, dopo aver analizzato i codici di errore della richiesta di trading, ho scoperto che il problema è nel riempimento del campo MqlTradeResult:
request.type_filling = ORDER_FILLING_IOC;
una ricerca nel forum non ha trovato una soluzione univoca - come determinare programmaticamente le impostazioni del server per il campo MqlTradeResult
ENUM_ORDER_TYPE_FILLING type_filling; // Тип ордера по исполнению
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---long chart_id=ChartID();
datetime time1=ChartTimeOnDropped();
double price1=ChartPriceOnDropped();
if(ObjectFind(chart_id,InpFiboName)<0)
FiboLevelsCreate(chart_id,InpFiboName,0,time1,price1,time1+InpAddSecond,price1-InpStopLoss*Point(),InpColor);
else
{
ObjectDelete(chart_id,InpFiboName);
ChartRedraw(chart_id);
FiboLevelsCreate(chart_id,InpFiboName,0,time1,price1,time1+InpAddSecond,price1-InpStopLoss*Point(),InpLevelsColor);
}
//---int levels = 6; // number of level linesdouble values[6]= {1.0,0.0,2.0,3.0,4.0,5.0}; // values of level linescolor colors[6]; // color of level linesfor(int i=0; i<6; i++)
colors[i]=InpLevelsColor;
ENUM_LINE_STYLE styles[6]; // style of level linesfor(int i=0; i<6; i++)
styles[i]=InpLevelsStyles;
int widths[6]= {2.0,2.0,2.0,2.0,2.0,2.0}; // width of level linesstring texts[6] = {"BREAK EVEN","STOP LOSS","TP1 1.1","TP2 2.1","TP3 3.1","TP4 4.1"}; // text of level lines//---
FiboLevelsSet(levels,values,colors,styles,widths,texts,chart_id,InpFiboName);
}
può essere impostato per i livelli: numero di linee, valore della linea, colore della linea, stile della linea, larghezza della linea, testo della linea.
intOnInit()
{
//---ChartSetInteger(ChartID(), CHART_EVENT_OBJECT_CREATE, true);
//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//---
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
}
//+------------------------------------------------------------------+/***********************OnChartEvent function************************/voidOnChartEvent(constint id, // идентификатор событияconstlong& lparam, // параметр события типа longconstdouble& dparam, // параметр события типа doubleconststring& sparam // параметр события типа string
)
{
if(id == CHARTEVENT_OBJECT_CREATE)
{
I++;
string result[]; // массив для получения строкStringSplit(sparam, ' ', result); // получим из имени созданного объекта подстрокиulong timeCreate = ObjectGetInteger(0, sparam, OBJPROP_CREATETIME); // получим время создания объектаstring newName = result[0]+" "+result[1]+" "+string(I); // сформируем новое имя объектаObjectSetString(0, sparam, OBJPROP_NAME, newName); // переименуем объект//----------------------------------------------------------------------------------------double Level_0= ObjectGetDouble(
0, // идентификатор графика
newName, // имя объектаOBJPROP_PRICE, // идентификатор свойства0// модификатор свойства
);
double Level_1= ObjectGetDouble(
0, // идентификатор графика
newName, // имя объектаOBJPROP_PRICE, // идентификатор свойства1// модификатор свойства
);
//------------------------------------------------------------------------------------------------------if(Level_0 > Level_1)
{
ObjectSetInteger(0,newName,OBJPROP_COLOR,clrDeepSkyBlue);
}
else
{
ObjectSetInteger(0,newName,OBJPROP_COLOR,clrYellow);
}
}/******************************************************************/
}
Ciao, potresti dirmi perché quando si esegue il debug del codice, andando passo dopo passo le linee vengono ricolorate in entrambi i colori a seconda dei valori delle coordinate. E lanciando EA sul grafico, la condizione delle linee if(Level_0 > Level_1) non è mai vera?
Ehi, potresti dirmi perché nel debug, quando si passa il codice passo dopo passo, le linee vengono ridipinte in entrambi i colori a seconda dei valori delle coordinate. E lanciando EA sul grafico, la condizione della linea if(Level_0 > Level_1) non è mai vera?
È molto probabile che dopo aver rinominato un oggetto, questo non sia ancora disponibile per l'accesso. Puoi provare a mettere ChartRedraw dopo aver rinominato. Se non funziona, dovete costruire la sequenza in qualche altro modo.
ps; Un'altra opzione: prima ridipingere con il nome sparam e poi rinominarlo.
Un indicatore per questo deve avere un parametro di colore in ingresso. Cioè, dovrebbe essere un indicatore personalizzato.
GRAZIE! ma se non ho accesso al codice sorgente, non è fattibile?
GRAZIE! Ma se non ho accesso al codice sorgente, non è implementabile?
Sì, devi avere un open source o un'implementazione già pronta.
Sì, è necessario avere un codice open source o un'implementazione pronta a partire.
Quando imposto il colore clrNONE nel tester, il colore viene ancora visualizzato! Quindi clrNONE non funziona nel tester? Non posso controllare nella vita reale - è il fine settimana...
Se imposto un colore qualsiasi invece di clrNONE, questo colore viene visualizzato, ma il valore vuoto = non funziona... strano...Risposta: anche ricaricare ripetutamente la macro)
Ma è meglio usare solo l'operatore + per le stringhe e convertire tutto in stringhe, allora non c'è bisogno di una funzione (e macro) con molti parametri
Grazie. Non sapevo che la macro potesse essere ricaricata.
Grazie. Non sapevo che la macro potesse essere ricaricata.
refuso - reload, non reload)
ha risolto gli esempi alla fine di questa sezione di aiutohttps://www.mql5.com/ru/docs/constants/structures/mqltraderequest
sul server Metacquot, tutto è OK
su un altro server, dopo aver analizzato i codici di errore della richiesta di trading, ho scoperto che il problema è nel riempimento del campo MqlTradeResult:
request.type_filling = ORDER_FILLING_IOC;una ricerca nel forum non ha trovato una soluzione univoca - come determinare programmaticamente le impostazioni del server per il campo MqlTradeResult
UPD: trovato una soluzione funzionantehttps://www.mql5.com/ru/forum/168912/page2#comment_4062864
@fxsaber grazie!
Per favore ditemi come impostare i livelli Fibo per l'autocostruzione
Esempio nel codiceFibonaci RR-
può essere impostato per i livelli: numero di linee, valore della linea, colore della linea, stile della linea, larghezza della linea, testo della linea.
Ciao, potresti dirmi perché quando si esegue il debug del codice, andando passo dopo passo le linee vengono ricolorate in entrambi i colori a seconda dei valori delle coordinate. E lanciando EA sul grafico, la condizione delle linee if(Level_0 > Level_1) non è mai vera?
Ehi, potresti dirmi perché nel debug, quando si passa il codice passo dopo passo, le linee vengono ridipinte in entrambi i colori a seconda dei valori delle coordinate. E lanciando EA sul grafico, la condizione della linea if(Level_0 > Level_1) non è mai vera?
È molto probabile che dopo aver rinominato un oggetto, questo non sia ancora disponibile per l'accesso. Puoi provare a mettere ChartRedraw dopo aver rinominato. Se non funziona, dovete costruire la sequenza in qualche altro modo.
ps; Un'altra opzione: prima ridipingere con il nome sparam e poi rinominarlo.