Tenimagalon: Veo que estamos teniendo una verdadera discusión. Alex, tú también estás involucrado en ella:)) Bueno, señor programador, ¿tiene usted un consenso? Mire, la función principal es cerrar órdenes del mismo tipo en función del beneficio total. Se abren 4 posiciones, 2 de ellas en EURUSD (compra y venta) y 2 de USDCHF (compra y venta).Si las órdenes de compra obtienen un beneficio las cierra, deja la orden de venta sola o deja la orden de venta sola.
Captura
double MyProfit=1000; // уровень профита//+--------------------------------------------------------------------------------------------------------------------+//| Expert tick function |//+--------------------------------------------------------------------------------------------------------------------+voidOnTick()
{
//---if(Open_Pr("",0)>MyProfit)DelOrders("",0); // закрываем покупкиif(Open_Pr("",1)>MyProfit)DelOrders("",1); // закрываем продажи//---
}
//+--------------------------------------------------------------------------------------------------------------------+//| Суммарный профит в валюте депозита открытых позиций |//| or_ty=0 - ордера типа BUY |//| or_ty=1 - ордера типа SELL |//+--------------------------------------------------------------------------------------------------------------------+double Open_Pr(string sy="", int or_ty=0)
{ double p = 0;
if (sy == "0") sy = Symbol();
for(int pos=OrdersTotal()-1;pos>=0;pos--)
{
if(OrderSelect(pos,SELECT_BY_POS)==true)
{
if(OrderSymbol() == sy || sy == "")
{
if(OrderType()==or_ty) {p+=OrderProfit()+OrderSwap()+OrderCommission();}
}
}
}
return(p);
}
//+--------------------------------------------------------------------------------------------------------------------+//| Функция удаления и закрытия ордеров |//| or_ty=0 - ордера типа BUY |//| or_ty=1 - ордера типа SELL |//+--------------------------------------------------------------------------------------------------------------------+void DelOrders(string sy="", int or_ty=0)
{
while(true)
{
bool find_order=false;
//----if (sy == "0") sy = Symbol();
for(int pos=OrdersTotal()-1;pos>=0;pos--)
if(OrderSelect(pos,SELECT_BY_POS)==true)
if(OrderSymbol() == sy || sy == "")
{
find_order=true;
//----if(OrderType()==or_ty)
{
RefreshRates(); int slip=(int)(((Ask-Bid)/Point)*2);
if(OrderClose(OrderTicket(),OrderLots(),Bid,slip,clrBlue)==false){}
}
//----if(OrderType()==or_ty)
{
RefreshRates(); slip=(int)(((Ask-Bid)/Point)*2);
if(OrderClose(OrderTicket(),OrderLots(),Ask,slip,clrRed)==false){}
}
Alert("Все ордера закрыты!");
}
if(find_order==false) Alert("Нет ордеров!");break;
}
}
//+--------------------------------------------------------------------------------------------------------------------+
Tenimagalon: Veo que estamos teniendo una verdadera discusión. Alex, estás involucrado :)) Bueno, señores programadores, ¿tienen un consenso? Miren, el problema es cerrar órdenes del mismo tipo para un beneficio total. Se abren 4 posiciones, 2 de ellas en EURUSD (compra y venta) y 2 de USDCHF (compra y venta).Si las órdenes de compra obtienen un beneficio las cierra, deja la orden de venta sola o deja la orden de venta sola.
Si tiene 3 posiciones abiertas en diferentes pares, es decir, 2 Bai y una sit, entonces sí, en este caso el robot cerrará los pares cuando se alcance el beneficio total. Si intenta abrir 4 posiciones en 2 pares, nunca obtendrá el beneficio total en este caso, el experto cierra los pares de órdenes, ya sea de compra o de venta. Pero cierra la compra de EURUSD y compra de USDCHF o cualquier otro par seleccionado.
Tenimagalon: Si tiene 3 posiciones abiertas en diferentes pares, es decir, 2 de Bai y una de Venta, entonces sí, en este caso el robot cerrará las posiciones cuando se alcance el beneficio total. Si intenta abrir 4 posiciones en 2 pares, nunca obtendrá el beneficio total en este caso, el experto cierra los pares de órdenes, ya sea de compra o de venta. Pero cierra la compra de EURUSD y compra de USDCHF o cualquier otro par seleccionado.
Taras :) Deberías abrir 4 posiciones una por una en EUR, una por una en CHF, luego dos más, una de venta en EUR, una de venta en CHF. Y mira cuando la compra y la venta lleguen al beneficio común el bot cerrará ambas o no. Y en sus pantallas veo órdenes para un instrumento que no debería ser a priori.
Tenimagalon: Taras :) Deberías abrir 4 posiciones en un solo paso. 1 larga en EUR, una larga en CHF, luego dos más, una de venta en EUR, una de venta en CHF. Y mira cuando la compra y la compra alcancen el beneficio total el bot cerrará ambas o no. Y en sus pantallas veo órdenes para un instrumento que no debería ser a priori.
agrupar los pares por compra o venta es un error
Por ejemplo, en un par (compra) podría haber una compra del dólar y en el otro par (venta) podría haber una venta del dólar.
Veo que estamos teniendo una verdadera discusión. Alex, tú también estás involucrado en ella:)) Bueno, señor programador, ¿tiene usted un consenso? Mire, la función principal es cerrar órdenes del mismo tipo en función del beneficio total. Se abren 4 posiciones, 2 de ellas en EURUSD (compra y venta) y 2 de USDCHF (compra y venta).Si las órdenes de compra obtienen un beneficio las cierra, deja la orden de venta sola o deja la orden de venta sola.
Captura
Veo que estamos teniendo una verdadera discusión. Alex, estás involucrado :)) Bueno, señores programadores, ¿tienen un consenso? Miren, el problema es cerrar órdenes del mismo tipo para un beneficio total. Se abren 4 posiciones, 2 de ellas en EURUSD (compra y venta) y 2 de USDCHF (compra y venta).Si las órdenes de compra obtienen un beneficio las cierra, deja la orden de venta sola o deja la orden de venta sola.
¿así? :)
Captura
¿así? :)
¿así? :)
Si tiene 3 posiciones abiertas en diferentes pares, es decir, 2 de Bai y una de Venta, entonces sí, en este caso el robot cerrará las posiciones cuando se alcance el beneficio total. Si intenta abrir 4 posiciones en 2 pares, nunca obtendrá el beneficio total en este caso, el experto cierra los pares de órdenes, ya sea de compra o de venta. Pero cierra la compra de EURUSD y compra de USDCHF o cualquier otro par seleccionado.
aquí hay muchas bahías y selvas)
¿Hiciste el cuadro de diálogo tú mismo o SB?
¿Hay paneles?
ps. a menos que haya objetos si lo hace
¿Hay paneles?
Sí, por eso lo pregunto.
Si lo ha hecho usted mismo, por favor comparta el código (colapsar, expandir, mover)
aquí hay muchas bahías y selvas)
Taras :) Deberías abrir 4 posiciones en un solo paso. 1 larga en EUR, una larga en CHF, luego dos más, una de venta en EUR, una de venta en CHF. Y mira cuando la compra y la compra alcancen el beneficio total el bot cerrará ambas o no. Y en sus pantallas veo órdenes para un instrumento que no debería ser a priori.
agrupar los pares por compra o venta es un error
Por ejemplo, en un par (compra) podría haber una compra del dólar y en el otro par (venta) podría haber una venta del dólar.