Hola! He intentado crear un indicador que utiliza 2 símbolos (EURUSD y GBPUSD por ejemplo), no dibuja (da un error 4806) ... Obtengo los handles del indicador en la función OnInit (iRSI por ejemplo) de cada símbolo, copio los datos del indicador en los buffers y realizo otras operaciones con ellos ...Recibe los datos del indicador para un símbolo (el mismo que coincide con el símbolo en el gráfico, al que adjunto el indicador) está bien, pero los datos del indicador para el segundo símbolo no se reciben ... es decir, recibe los datos sólo para el símbolo que coincide con el símbolo en el gráfico, al que se adjunta ... ¿qué estoy haciendo mal?
FinEngineer: Hola! He intentado crear un indicador que utiliza 2 símbolos (EURUSD y GBPUSD por ejemplo), no dibuja (da un error 4806) ... Obtengo los handles del indicador en la función OnInit (iRSI por ejemplo) de cada símbolo, copio los datos del indicador en los buffers y realizo otras operaciones con ellos ...Recibe los datos del indicador para un símbolo (el mismo que coincide con el símbolo en el gráfico, al que adjunto el indicador) está bien, pero los datos del indicador para el segundo símbolo no se recibe ... es decir, recibe los datos sólo para el símbolo que coincide con el símbolo en el gráfico, al que se adjunta el indicador ... ¿qué estoy haciendo mal?
Así que muéstrame la parte del código que causó el problema.
Pongo el código completo, porque no funciona nada, en mql4 todo era mucho más fácil, quizás sea porque no estoy acostumbrado... estos manejadores y buffers auxiliares me están matando el cerebro.
Creo que el significado es claro (diferencia en el rsi de 2 símbolos correlativos), por favor, ayuda.... señalar los errores?
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
Si el MACD se adjunta al gráfico EURUSD, se dibujará todo, si se adjunta a otro gráfico - aparecerá el error 4806... ¿Cómo puedo hacer para que en este indicador pueda utilizar tantos símbolos como quiera?
Si sabes cómo hacer funcionar el indicador publicado anteriormente, te lo agradecería mucho.
Si no quieres, tienes que contar las variables correctamente.
Tengo la idea del archivo de Schablon con un éxito mixto, lo llevé a mis condiciones un poco y estableció paradas y ganancias. Sin embargo, hay un punto muerto importante para mí - se fijan en la siguiente vela, no en una garrapata. Aquí está la parte del EA.
Con más o menos éxito, conseguí lo esencial del archivo de Schablon, lo ajusté un poco a mis condiciones y ¡Hurra! Sin embargo, hay un punto muerto importante para mí - se fijan en la siguiente vela, no en una garrapata. Aquí está una parte del código.
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);
}
}
}
}
//===============================================
El código debe contener siempre condiciones para algunas acciones, pero todo debe ser comprobado y tener alguna lógica.
Si quieres ayudar, imprime(", ); ) y mira el resultado.
Las descripciones son todas claras y funcionan. Pero se trata de una modificación del "breakeven" y del "trailing". Debería escribir una modificación para establecer StopLimit y TakeProfit después de la apertura de la orden, es decir
1. apertura del pedido
--------
2. Modificación de la configuración del límite de parada (¡todavía no está disponible!)
¿Hay algún desarrollador de MQL5 en este hilo? ¿Estoy haciendo una pregunta en la rama equivocada? Entonces, dígame cómo hacer una pregunta a los desarrolladores. La pregunta anterior es elemental para un programador experimentado...
Hola! He intentado crear un indicador que utiliza 2 símbolos (EURUSD y GBPUSD por ejemplo), no dibuja (da un error 4806) ... Obtengo los handles del indicador en la función OnInit (iRSI por ejemplo) de cada símbolo, copio los datos del indicador en los buffers y realizo otras operaciones con ellos ...Recibe los datos del indicador para un símbolo (el mismo que coincide con el símbolo en el gráfico, al que adjunto el indicador) está bien, pero los datos del indicador para el segundo símbolo no se recibe ... es decir, recibe los datos sólo para el símbolo que coincide con el símbolo en el gráfico, al que se adjunta el indicador ... ¿qué estoy haciendo mal?
Pongo el código completo, porque no funciona nada, en mql4 todo era mucho más fácil, quizás sea porque no estoy acostumbrado... estos manejadores y buffers auxiliares me están matando el cerebro.
Creo que el significado es claro (diferencia en el rsi de 2 símbolos correlativos), por favor, ayuda.... señalar los errores?
#property copyright "Copyright 2012, MetaQuotes Software Corp.error #1
no utilizar la tecla SRC
Este error se produce, por ejemplo, si se toma un indicador MACD estándar personalizado y se cambia la siguiente línea
ExtFastMaHandle=iMA(NULL,0,InpFastEMA,0,MODE_EMA,InpAppliedPrice);
a
ExtFastMaHandle=iMA("EURUSD",0,InpFastEMA,0,MODE_EMA,InpAppliedPrice);
Si el MACD se adjunta al gráfico EURUSD, se dibujará todo, si se adjunta a otro gráfico - aparecerá el error 4806... ¿Cómo puedo hacer para que en este indicador pueda utilizar tantos símbolos como quiera?
Si sabes cómo hacer funcionar el indicador publicado anteriormente, te lo agradecería mucho.
Lester: Aquí puse una plantilla, dentro hay una modificación - te mostré cómo rastrear.
https://www.mql5.com/ru/forum/6343/page73
Si no quieres, tienes que contar las variables correctamente.
Tengo la idea del archivo de Schablon con un éxito mixto, lo llevé a mis condiciones un poco y estableció paradas y ganancias. Sin embargo, hay un punto muerto importante para mí - se fijan en la siguiente vela, no en una garrapata. Aquí está la parte del EA.
Con más o menos éxito, conseguí lo esencial del archivo de Schablon, lo ajusté un poco a mis condiciones y ¡Hurra! Sin embargo, hay un punto muerto importante para mí - se fijan en la siguiente vela, no en una garrapata. Aquí está una parte del código.
El código debe contener siempre condiciones para algunas acciones, pero todo debe ser comprobado y tener alguna lógica.
Si quieres ayudar, imprime(", ); ) y mira el resultado.
Las descripciones son todas claras y funcionan. Pero se trata de una modificación del "breakeven" y del "trailing". Debería escribir una modificación para establecer StopLimit y TakeProfit después de la apertura de la orden, es decir
1. apertura del pedido
--------
2. Modificación de la configuración del límite de parada (¡todavía no está disponible!)
------
3. Modificación del punto de equilibrio
4.Modificación del trailing stop
5.Cerrar orden
Puede utilizar el punto 2 para modificar el orden, pero sólo al principio de la siguiente barra.
Se escribe una función para abrir eats: