Para hacerlo más fácil coge mi código fuente, tiene una lógica que funciona, salvo el problema que he descrito, no lo entiendo del todo, me hierve la cabeza pero no consigo sacarle partido.
SGarnov: Tengo la sensación de que el robot se está fortaleciendo, no me gusta que cuando coloco órdenes o no quiero operar porque ya la he colocado, no pueda abrirla porque ya la he colocado, sólo tiene que abrir la orden.
@MakarFX ya lo está haciendo. No nos interpongamos en el camino.
Lo que quería decir... Escribe todo de forma que te quede claro (personalmente/personalmente), no saques código con copy-paste.
y un esqueleto de robot muy simplificado se parece a esto:
int ticket=-1; // тикет открытого ордераbool inited=false; // признак завершения инициализацииintOnInit()
{
ticket=-1;
inited=false;
// ещё надо проверить параметры, но пока чёрт с ними// пробуем загрузить прежнее состояниеif (LoadState()) {
// из файла, базы или глоб.переменных загрузилисьif (!CheckState()) {
// проверили, плохо всё..
ClearState(); // удалить и поругатьсяAlert("Усё пропало, шеф !");
returnINIT_FAILED();
}
}
return(INIT_SUCCEEDED);
}
voidOnDeinit(constint reason)
{
if (inited) {
// инициализация была проведена, стейт мог уже менятся во время работы
SaveState(); // сохраняем куда-то там
}
}
voidOnTick()
{
//// ЧТОБЫ БЫ БЫЛО ХОРОШО, //// НЕ БОЛЕЕ 1-го ПРИКАЗА Open/Close/Modify на тик//// И ЗАВЕРШИТЬ ВСЁ ПО БЫСТРОМУif (!inited) {
// связь есть, тики идут// довести инициализацию до нужной кондицииif (!DoInit()) {
// не довеласьAlert("вот же блин...");
ExpertRemove();
} else {
// в DoInit проставлен корректный ticket
inited=true;
}
return;
}
// всё проиничено, ticket или -1 если нет нифига или реально тикет//// РАЗБОРЫ С ТИКЕТАМИif (ticket<0) {
// нет открытых ордеров// может открыть/переоткрыть ?
} else {
if (!OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) {
// что-то не так с синхронизацией, просто пропустим тикreturn;
}
if (OrderCloseTime()!=0) {
// ордер закрылся ручками или по стопам/тейкам (или стопаут, приплыли)
OnCloseOrder(); // обработать, разобраться
ticket=-1; // нет у нас больше тикета..// в этот тик больше не успетьreturn;
} else {
if ((OrderStopLoss()==0 && SL!=0) || (OrderTakeProfit()==0 && TP!=0)) {
// свежачок - надо ему выстаить Тейк и/или стоп
} else {
// для реала - проверять сработку Sl/Tp на ГЕПАХ, ЭТО ВАЖНО
}
}
}
//// РАЗБОРЫ с БАРАМИ
CheckForOnBar();
/// и так далее...
}
voidOnTimer()
{
// тики завершаем быстро-быстро, поэтому открытия баров дополнительно проверяем по таймеру
CheckForOnBar();
}
la cerveza hace maravillas y vuelve a la gente más amable :-)
Para hacerlo más fácil coge mi código fuente, tiene una lógica que funciona, salvo el problema que he descrito, no lo entiendo del todo, me hierve la cabeza pero no consigo sacarle partido.
Tengo la sensación de que el robot se está fortaleciendo, no me gusta que cuando coloco órdenes o no quiero operar porque ya la he colocado, no pueda abrirla porque ya la he colocado, sólo tiene que abrir la orden.
@MakarFX ya lo está haciendo. No nos interpongamos en el camino.
Lo que quería decir... Escribe todo de forma que te quede claro (personalmente/personalmente), no saques código con copy-paste.
y un esqueleto de robot muy simplificado se parece a esto:
la cerveza hace maravillas y vuelve a la gente más amable :-)
¿Pone una orden pendiente o dos en diferentes direcciones?
Siempre pongo uno pendiente.
Pruébalo, pídelo
Pruébalo, pídelo
Ya os contaré qué pasa. Gracias por la ayuda.
¿Puede alguien explicar la razón de este comportamiento?
Abro un pedido
entonces el Asesor Experto lo modifica
y entonces sucede esta mierda
2021.07.29 18:53:58.313 '60744458': order #1639674290 sell 0.01 USDJPY closing at 0.000 failed [Off quotes] 2021.07.29 18:53:57.647 '60744458': close order #1639674290 sell 0.01 USDJPY at 109.519 sl: 0.000 tp: 0.000 at price 0.000Lo interesante es que ocurre en el USDJPY y sólo se vende en otros pares
¿Puede alguien explicar la razón de este comportamiento?
Abro un pedido
entonces el Asesor Experto lo modifica
y entonces sucede esta mierda
Lo interesante es que sólo ocurre en el USDJPY y todo está bien en los demás
Si quieres entender algo, tienes que aprender a obtener el máximo de información útil en el mínimo de ciclos...
Para entender algo, aprende a sacar la información más útil en el menor número de ciclos...
Es bueno hablar cuando se sabe qué hacer...
ayuda con consejos sobre cómo "sacar el máximo partido a la información útil"
¿Puede alguien explicar la razón de este comportamiento?
Abro un pedido
entonces el Asesor Experto lo modifica
y entonces sucede esta mierda
Lo interesante es que ocurre en el USDJPY y sólo se vende en otros pares
¿Es así como funciona el EA para el que escribiste el código?