Sólo me preocupa una pequeña cosa: todas las órdenes se cierran de vez en cuando (es decir, todas y siempre), pero a veces, si abro 3-4 órdenes, sólo 2 o 1 de ellas pueden cerrarse. Creo que hay un i-check especial, puede ser que tenga una pista.
Hola a todos. Puede alguien ayudar a editar el EA. Necesito eliminar la función de apertura de órdenes, para que el EA no abra órdenes por sí mismo, sino que sólo funcione con órdenes abiertas manualmente. Muchas gracias de antemano.
Tomamos un zig-zag y en OnCalculace comprobamos su buffer en busca de valores normalmente mayores que 0 (significa que el buffer almacena el valor del extremo, bajo o alto). Hacemos un bucle a través del buffer utilizando el
intOnCalculate( constint rates_total, // размер входных таймсерий constint prev_calculated, // обработано баров на предыдущем вызове constdatetime& time[], // Time constdouble& open[], // Open constdouble& high[], // High constdouble& low[], // Low constdouble& close[], // Close constlong& tick_volume[], // Tick Volume constlong& volume[], // Real Volume constint& spread[] // Spread
) {
// код зиг-зага
...
if (prev_calculated > 0) // дальнейший код сработает только один разreturn (rates_total);
// обработка значений зиг-загаfor (int i = rates_total - 1; i >= 0; i--) {
if (zigZag[i] > 0) { // найден экстремум// сохраняем time[i] в любую удобную форму для дальнейшей работы
}
}
return (rates_total);
}
el bucle anterior (de derecha a izquierda) está pensado para MQL5
para MQL4 el bucle será de izquierda a derecha
for (int i = 0; i < rates_total; i++)
Los ejemplos anteriores dan primero nuevos valores de tiempo. Para obtener primero los valores anteriores en el tiempo, utilice ArraySetAsSeries o invierta la dirección del bucle.
Los datos pueden ser recuperados desde el script utilizando iCustom, CopyTime o iTime, así como iBars (en lugar de rates_total).
voidOnTick()
{
// Получим значение индикатора
dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.// Если нет открытых ордеров, то входим в условиеif(CountOrders()==0)
{
// Если появился сигнал на покупку, то откроем ордер на покупкуif(bSignalBuy() == true)
vOrderOpenBuy();
// Если появился сигнал на продажу, то откроем ордер на продажуif(bSignalSell() == true)
vOrderOpenSell();
}
DrawLABEL("nextlot",1,5,0,Color1(),StringConcatenate("CURRENT LOT: ",DoubleToStr(LOT(),2)));
DrawLABEL("currentlot",1,5,0,Color2(),StringConcatenate("NEXT LOT: ",DoubleToStr(LOT(),2)));
TrailingOrders();
}
entonces la parada y la retirada se desplazan instantáneamente un número infinito de veces
Sino se utiliza TrailingOrders(); entonces nada se desplaza.
Mi tarea no era crear un movimiento de arrastre, sino mover el stop y el takeout una/dos veces.
Llevo todo el día "inventando" cosas, de momento nada funciona.
entonces la parada y la retirada se desplazan instantáneamente un número infinito de veces
Sino se utiliza TrailingOrders(); entonces nada se desplaza.
Mi tarea no era crear un movimiento de arrastre, sino mover el stop y el takeout una/dos veces.
Llevo todo el día "inventando" cosas, de momento nada funciona.
El trailing stop debe funcionar si el precio se mueve en la dirección del TP, y no debe hacer nada si el precio retrocede. El nivel de SL debe ir sólo en la dirección del TP y no retroceder.
Ya veo. Gracias.
Sólo me preocupa una pequeña cosa: todas las órdenes se cierran de vez en cuando (es decir, todas y siempre), pero a veces, si abro 3-4 órdenes, sólo 2 o 1 de ellas pueden cerrarse. Creo que hay un i-check especial, puede ser que tenga una pista.
No descuides los paréntesis, prueba esto
Cómo obtener los extremos de ZZ en formato D' 2021.01.05
¿No hay guión?
¿No hay guión?
Tomamos un zig-zag y en OnCalculace comprobamos su buffer en busca de valores normalmente mayores que 0 (significa que el buffer almacena el valor del extremo, bajo o alto). Hacemos un bucle a través del buffer utilizando el
el bucle anterior (de derecha a izquierda) está pensado para MQL5
para MQL4 el bucle será de izquierda a derecha
Los ejemplos anteriores dan primero nuevos valores de tiempo. Para obtener primero los valores anteriores en el tiempo, utilice ArraySetAsSeries o invierta la dirección del bucle.
Los datos pueden ser recuperados desde el script utilizando iCustom, CopyTime o iTime, así como iBars (en lugar de rates_total).
Debo estar malinterpretando algo.
si cambio la función en
entonces la parada y la retirada se desplazan instantáneamente un número infinito de veces
Sino se utiliza TrailingOrders(); entonces nada se desplaza.
Mi tarea no era crear un movimiento de arrastre, sino mover el stop y el takeout una/dos veces.
Llevo todo el día "inventando" cosas, de momento nada funciona.
Debo estar malinterpretando algo.
si cambio la función en
entonces la parada y la retirada se desplazan instantáneamente un número infinito de veces
Sino se utiliza TrailingOrders(); entonces nada se desplaza.
Mi tarea no era crear un movimiento de arrastre, sino mover el stop y el takeout una/dos veces.
Llevo todo el día "inventando" cosas, de momento nada funciona.
El trailing stop debe funcionar si el precio se mueve en la dirección del TP, y no debe hacer nada si el precio retrocede. El nivel de SL debe ir sólo en la dirección del TP y no retroceder.