Ho provato a creare un indicatore che utilizza 2 simboli (EURUSD e GBPUSD per esempio), non si disegna (dà un errore 4806) ... Ottengo gli handle degli indicatori nella funzione OnInit (iRSI per esempio) di ogni simbolo, copio i dati dell'indicatore nei buffer ed eseguo ulteriori operazioni con essi ...Riceve i dati dell'indicatore per un simbolo (lo stesso simbolo che coincide con il simbolo sul grafico, al quale collego l'indicatore) è ok, ma i dati dell'indicatore per il secondo simbolo non vengono ricevuti ... cioè riceve i dati solo per il simbolo che coincide con il simbolo sul grafico, al quale è collegato ... cosa sto sbagliando?
FinEngineer: Ho provato a creare un indicatore che utilizza 2 simboli (EURUSD e GBPUSD per esempio), non si disegna (dà un errore 4806) ... Ottengo gli handle degli indicatori nella funzione OnInit (iRSI per esempio) di ogni simbolo, copio i dati dell'indicatore nei buffer ed eseguo ulteriori operazioni con essi ...Riceve i dati dell'indicatore per un simbolo (lo stesso simbolo che coincide con il simbolo sul grafico, al quale collego l'indicatore) è ok, ma i dati dell'indicatore per il secondo simbolo non vengono ricevuti ... cioè, riceve i dati solo per il simbolo che coincide con il simbolo sul grafico, al quale è collegato l'indicatore ... cosa sto sbagliando?
Quindi mostratemi la parte di codice che ha causato il problema.
Sto postando l'intero codice, perché non funziona nulla, su mql4 era tutto molto più facile, forse sono solo disabituato... questi handle e buffer ausiliari mi stanno uccidendo il cervello.
Penso che il significato sia chiaro (differenza di rsi di 2 simboli correlati), si prega di aiutare....point fuori gli errori?
MQL5: language of trade strategies built-in the MetaTrader 5 Trading Platform, allows writing your own trading robots, technical indicators, scripts and libraries of functions
Se MACD è attaccato al grafico EURUSD, tutto sarà disegnato, se è attaccato a un altro grafico - apparirà l'errore 4806... Come posso fare in modo che in questo indicatore possa usare tutti i simboli che voglio?
Se sai come far funzionare l'indicatore precedentemente postato, te ne sarei molto grato.
Se non volete, dovete contare correttamente le variabili.
Ho avuto l'idea del file Schablon con successo misto, l'ho portato un po' alle mie condizioni e funziona. Tuttavia c'è una significativa impasse per me - sono impostati sulla prossima candela, non su un tick. Ecco la parte dell'EA.
Con un successo variabile ho ottenuto il succo del file Schablon, l'ho adattato un po' alle mie condizioni e Urrà - stop e profitti sono impostati. Tuttavia c'è una significativa impasse per me - sono impostati sulla prossima candela, non su un tick. Ecco una parte del codice.
inputdouble TP = 0.003;
inputdouble STR = 0.0012;
inputdouble TR = 0.0002;
//=============================================== //Един вид извикване на модификация на отворената позицияdouble buy_trail = 0;
double sel_trail = 0;
double SL,T_P,Open;
ulong L_S;
Ну ладно-обяснения:
if(PositionSelect(_Symbol)){//Ест ли позиция по символа
Open = PositionGetDouble(POSITION_PRICE_OPEN);//цена опен для поза
SL = PositionGetDouble(POSITION_SL);//цена стоп для поза
T_P = PositionGetDouble(POSITION_TP);//цена тейк для поза
Bid = SymbolInfoDouble(_Symbol,SYMBOL_BID);//цена бид
Ask = SymbolInfoDouble(_Symbol,SYMBOL_ASK);//цена аск
L_S = SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL);//стоп ниво,если ест такое-оно в пункты
buy_trail = NormalizeDouble(Bid - Open,Digits());//вычисляем разстояние от цена бид и цена опен позиции-ето для бай
sel_trail = NormalizeDouble(Open - Ask,Digits());//вычисляем разстояние от цена опен позиции и цена аск-ето для селif(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)//если ест бай поза
{
if(buy_trail > STR)//если разстояние болше указаное
{
if(NormalizeDouble((Bid - STR),Digits()) >= Open && Open > SL)
//если цена бид минус указаное разстояние болше щем цена опен и цена опен болше цена стоп-вызиваем модификация//сама модификация-для стоп будет цена опен,цена тейк не меняем.
{
ModifyPosition(_Symbol,Open,T_P);
}
if(NormalizeDouble((Bid - TR),Digits()) > SL && Open <= SL)
//если цена бид минус указаное разстояние TR = 0.0002 болше уже от новый стоп(который поменяли уже) и цена опен менше новый стоп //вызиваем модификация//сама модификация - для стоп будет прошлый стоп минус стоп ниво* _Point(что б стали пипси) плюс указаное TR,цена тейк не меняем.//Т.е. будем двигат стоп через каждые 2 пипса
{
ModifyPosition(_Symbol,NormalizeDouble(((SL - L_S * _Point) + TR),Digits()),T_P);
}
}
}
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
{
if(sel_trail > STR)
{
if(NormalizeDouble((Ask + STR),Digits()) <= Open && Open < SL)
{
ModifyPosition(_Symbol,Open,T_P);
}
if(NormalizeDouble((Ask + TR),Digits()) < SL && Open >= SL)
{
ModifyPosition(_Symbol,NormalizeDouble(((SL +L_S * _Point)- TR),Digits()),T_P);
}
}
}
}
//===============================================
Il codice dovrebbe sempre contenere condizioni per alcune azioni, ma tutto dovrebbe essere controllato e avere una certa logica.
Se vuoi aiutare, stampa(" ", ); ) e vedi il risultato.
Le descrizioni sono tutte chiare e funzionano. Ma questa è una modifica a "breakeven" e "trailing". Dovrei scrivere una modifica per impostare StopLimit e TakeProfit dopo l'apertura dell'ordine, cioè
1. apertura dell'ordine
--------
2. Modifica del limite di arresto (questo non c'è ancora!)
Ci sono sviluppatori MQL5 in questo thread? Sto facendo una domanda nel ramo sbagliato? Allora dimmi come fare una domanda agli sviluppatori? La domanda di cui sopra è elementare per un programmatore esperto...
Ho provato a creare un indicatore che utilizza 2 simboli (EURUSD e GBPUSD per esempio), non si disegna (dà un errore 4806) ... Ottengo gli handle degli indicatori nella funzione OnInit (iRSI per esempio) di ogni simbolo, copio i dati dell'indicatore nei buffer ed eseguo ulteriori operazioni con essi ...Riceve i dati dell'indicatore per un simbolo (lo stesso simbolo che coincide con il simbolo sul grafico, al quale collego l'indicatore) è ok, ma i dati dell'indicatore per il secondo simbolo non vengono ricevuti ... cioè, riceve i dati solo per il simbolo che coincide con il simbolo sul grafico, al quale è collegato l'indicatore ... cosa sto sbagliando?
Sto postando l'intero codice, perché non funziona nulla, su mql4 era tutto molto più facile, forse sono solo disabituato... questi handle e buffer ausiliari mi stanno uccidendo il cervello.
Penso che il significato sia chiaro (differenza di rsi di 2 simboli correlati), si prega di aiutare....point fuori gli errori?
#property copyright "Copyright 2012, MetaQuotes Software Corp.errore #1
mancato utilizzo del tasto SRC
Un tale errore si verifica, per esempio, se prendete un indicatore MACD standard personalizzato e cambiate la seguente linea
ExtFastMaHandle=iMA(NULL,0,InpFastEMA,0,MODE_EMA,InpAppliedPrice);
a
ExtFastMaHandle=iMA("EURUSD",0,InpFastEMA,0,MODE_EMA,InpAppliedPrice);
Se MACD è attaccato al grafico EURUSD, tutto sarà disegnato, se è attaccato a un altro grafico - apparirà l'errore 4806... Come posso fare in modo che in questo indicatore possa usare tutti i simboli che voglio?
Se sai come far funzionare l'indicatore precedentemente postato, te ne sarei molto grato.
Lester: Qui ho messo un modello, dentro c'è una modifica che mostra come strisciare.
https://www.mql5.com/ru/forum/6343/page73
Se non volete, dovete contare correttamente le variabili.
Ho avuto l'idea del file Schablon con successo misto, l'ho portato un po' alle mie condizioni e funziona. Tuttavia c'è una significativa impasse per me - sono impostati sulla prossima candela, non su un tick. Ecco la parte dell'EA.
Con un successo variabile ho ottenuto il succo del file Schablon, l'ho adattato un po' alle mie condizioni e Urrà - stop e profitti sono impostati. Tuttavia c'è una significativa impasse per me - sono impostati sulla prossima candela, non su un tick. Ecco una parte del codice.
Il codice dovrebbe sempre contenere condizioni per alcune azioni, ma tutto dovrebbe essere controllato e avere una certa logica.
Se vuoi aiutare, stampa(" ", ); ) e vedi il risultato.
Le descrizioni sono tutte chiare e funzionano. Ma questa è una modifica a "breakeven" e "trailing". Dovrei scrivere una modifica per impostare StopLimit e TakeProfit dopo l'apertura dell'ordine, cioè
1. apertura dell'ordine
--------
2. Modifica del limite di arresto (questo non c'è ancora!)
------
3. Modifica per il pareggio
4. Modifica del trailing stop
5.Chiudere l'ordine
Puoi usare il punto 2 per modificare l'ordine, ma solo all'inizio della prossima barra.
Viene scritta una funzione per aprire eats: