[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 364
Ho controllato questo codice ora su un conto reale, tutto è OK, ho modificato tutti gli ordini di mercato, ma l'unica cosa che non ho toccato sono gli ordini pendenti. Qual è il problema? Cosa ne pensate?
Noterday: Ho controllato questo codice sul mio conto reale, tutto è ok, ho modificato tutti gli ordini di mercato, ma ho lasciato gli ordini pendenti intatti. Qual è il problema? Cosa ne pensate?
C'è anche una frase nel nome dello script che dice solo ordini di mercato... Rimuovi quelle condizioni per gli ordini a mercato, poi le condizioni per gli ordini a mercato e in sospeso saranno soddisfatte - questo è tutto. No, non è tutto - leggi attentamente - requisiti e limitazioni... ...e assicurati di aggiungere questi requisiti minimi ai tuoi ordini in sospeso, in modo che siano soddisfatti anche loro.
Gli ordini a mercato non vengono chiusi se i valori di StopLoss o TakeProfit violano i requisiti del parametro FreezeLevel. Gli ordini a mercato StopLoss o TakeProfit non possono essere modificati se i valori di StopLoss o TakeProfit violano i requisiti del parametro StopLevel. La cancellazione e la modifica degli ordini in sospeso non vengono eseguite se il prezzo aperto dichiarato dell'ordine viola i requisiti del parametro FreezeLevel.
if (OrdersTotal()!=0)
{
bool modify;
int Done=0;
for (i = 1; i <= OrdersTotal(); i++)
{
if (OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES) == true)
{
Stop = OrderStopLoss();
Take = OrderTakeProfit();
Print("Пробую модифицировать ",i," ордер (#",OrderTicket(),")");
modify = OrderModify(OrderTicket(),0,SL,TP,0,0); <<<--------------------- во втором параметре OrderModify нужно ставить не ноль а Orderopenprice()
if (modify==true) Done++;
if (modify==false)
{
int error = GetLastError();
Print(" Неудача... Ошибка ",error);
Sleep(5000);
}
}
}
Alert("Модифицировано ",Done," из ",OrdersTotal());
Sleep(10000);
}
e già allora si controlla il rispetto dei "Requisiti e restrizioni di trading" di questo o quell'ordine selezionato, ogni tipo di ordine selezionato ha i suoi propri requisiti e restrizioni... e qui lo script è solo per gli ordini di mercato... Modifica per analogia e questo è tutto - hai tutte le informazioni. Con calma, attenzione e metodo.
Ho controllato questo codice sul mio conto reale, tutto è ok, ho modificato tutti gli ordini di mercato, ma ho lasciato gli ordini pendenti intatti. Qual è il problema? Cosa ne pensate?
Nella condizione
if(cmd==OP_BUY || cmd==OP_SELL)e nella condizione
if(cmd==OP_BUY)Non capisco :(
C'è anche una frase nel nome dello script che dice solo ordini di mercato... Rimuovi quelle condizioni per gli ordini a mercato, poi le condizioni per gli ordini a mercato e in sospeso saranno soddisfatte - questo è tutto. No, non è tutto - leggi attentamente - requisiti e limitazioni... ...e assicurati di aggiungere questi requisiti minimi ai tuoi ordini in sospeso, in modo che siano soddisfatti anche loro.
Quindi non ho affatto queste linee, non seleziono affatto il tipo, modifico TUTTO, che sia in sospeso o a mercato.
Vi scrivo per leggere attentamente: "Limitazione della distanza FreezeLevel.
Gli ordini a mercato non vengono chiusi se i valori di StopLoss o TakeProfit violano i requisiti del parametro FreezeLevel.
Gli ordini a mercato StopLoss o TakeProfit non possono essere modificati se i valori di StopLoss o TakeProfit violano i requisiti del parametro StopLevel.
La cancellazione e la modifica degli ordini in sospeso non vengono eseguite se il prezzo aperto dichiarato dell'ordine viola i requisiti del parametro FreezeLevel.
Ecco, l'errore era lì:
Quindi non ho affatto queste linee, non seleziono affatto il tipo, modifico TUTTO, che sia in sospeso o a mercato.
Anche nella condizione questo
cambiare in modo simile sotto l'ordine da selezionare (cambiare la condizione di definizione del tipo di ordine in una di queste: