[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 765

 

Ho bisogno di prezzi per gli ordini pendenti dagli stop e usavo gli ordini pendenti in questo modo

PRAskL=Ask-Point*TakeProfit+Spread;  // цена OpenBuyLimitOrder
PRAskS=Ask+Point*TakeProfit+Spread;  // цена OpenBuyStopOrder
PRBidL=Bid+Point*TakeProfit-Spread;  // цена OpenSellLimitOrder
PRBidS=Bid-Point*TakeProfit-Spread;  // цена OpenSellStopOrder

где 
TakeProfit - глобальная переменая и грубо говоря ее значение постояно
Spread - временая переменая,



но мне не удобно брать цену через рынок и решил напрямую вот так
for(int h=1; h<=OrdersTotal(); h++)         
{if (OrderSelect(h-1,SELECT_BY_POS)==true)   
int Tip=OrderType();                   
if(HaveBuyOrder == true)continue; 
double PRAskS=OrderStopLoss();                   
double PRAskL=OrderTakeProfit();                    
int Tip1=OrderType();                           
if(HaveSellOrder == true)continue; 
double PRBidS=OrderStopLoss();                   
double PRBidL=OrderTakeProfit();   

но оно выдает ошибки 
Ошибка № 4107 при открытиии SELL ордера 
invalid takeprofit for OrderSend function

Ошибка № 4107 при открытиии BUY ордера              
invalid takeprofit for OrderSend function

Ho bisogno di uno stop e di un prezzo in yen e devo prendere in considerazione gli spreads

 
FoxUA:

Ho bisogno di prezzi per gli ordini pendenti dagli stop e usavo gli ordini pendenti in questo modo

come faccio a risolvere questo problema, dovrei essere in grado di prendere yen alle fermate e ik profitti e allo stesso tempo dovrei anche prendere in considerazione gli spread

Andrei, ci risiamo, troppo poco codice, hai un errore nella funzione OrderSend, mentre non possiamo vederla né i suoi parametri in questa sezione di codice. Volete piazzare ordini pendenti basati su stop-loss e take-profits di ordini di mercato già esistenti?

 
ToLik_SRGV:

Andrei, di nuovo, troppo poco codice, hai un errore nella funzione OrderSend, e non la vediamo né i suoi parametri in questa parte del codice. Volete piazzare ordini pendenti basati sui dati di stop-loss e take-profits degli ordini di mercato già esistenti?

Sì, proprio così, mettere ordini pendenti basati sui dati di stop-loss e take-profits degli ordini di mercato esistenti

l'intero codice è troppo grande, è un esempio di come ha funzionato per me e come ho provato a farlo, ma non è giusto, quindi come potrei farlo bene?

 

Ho un esempio basato su regole che si apre ma solo un ordine, cioè vendere

cioè per tutti e 4 gli ordini pendenti, cioè il prezzo di apertura al buy loss e al sell loss così come il buy stop e il sell stop sono gli stessi,

Voglio che un limite di acquisto si apra subito alla chiusura, per esempio comprare su stop,

GBPJPY,H1: ordine SELL aperto: 137.16
GBPJPY,H1: aprire #3897394 vendere limite 0,30 GBPJPY a 137,16 sl: 138,36 tp: 135,96 ok
GBPJPY,H1: ordine SELL aperto: 134.76
GBPJPY,H1: aprire #3897393 vendere stop 0,10 GBPJPY a 134,76 sl: 135,96 tp: 133,56 ok
GBPJPY,H1: ordine BUY aperto: 134.76
GBPJPY,H1: aperto #3897392 comprare limite 0.30 GBPJPY a 134.76 sl: 133.56 tp: 135.96 ok
GBPJPY,H1: ordine BUY aperto: 137.16
GBPJPY,H1: aperto #3897391 buy stop 0.10 GBPJPY a 137.16 sl: 135.96 tp: 138.36 ok
GBPJPY,H1: ordine SELL aperto: 135.96
GBPJPY,H1: aprire #3897390 vendere 0,10 GBPJPY a 135,96 sl: 137,16 tp: 134,76 ok
GBPJPY,H1: ordine BUY aperto: 136.04
GBPJPY,H1: aprire #3897389 comprare 0,10 GBPJPY a 136,04 sl: 134,84 tp: 137,24 ok
GBPJPY,H1: inizializzato
GBPJPY,H1 input: StopLoss=120; TakeProfit=120; Lot=0.1; Magic=777; Slippage=5;
GBPJPY,H1: caricato con successo

for(int o=1; o<=OrdersTotal(); o++)                                   
{if (OrderSelect(o-1,SELECT_BY_POS)==true)                               
{ if (OrderSymbol()!= Curr_symb) continue;                          
  if (OrderType()>1) continue;      
{if(HaveBuyOrder == true) 
double PRAskL=OrderStopLoss();                   
double PRAskS=OrderTakeProfit();      
{                   
int Tip1=OrderType();                         
if(HaveSellOrder == true)
double PRBidL=OrderStopLoss();                   
double PRBidS=OrderTakeProfit(); } }                  
} }              
 
hedger:

Aiutami a capire.

Sul grafico che può essere aperto nel tester al termine dei test, gli indicatori su cui si basa l'EA non sono sempre disegnati. Si può rimediare e se sì, come? Rispondimi, per favore

Forse c'è una risposta alla mia domanda?
 
hedger:

Forse c'è una risposta alla mia domanda?

void HideTestIndicators( bool hide)
La funzione imposta il flag per nascondere gli indicatori chiamati dall'Expert Advisor. Quando il grafico viene aperto dopo il test, gli indicatori marcati con il flag di nascondere non saranno visualizzati nel grafico di test. Gli indicatori saranno contrassegnati con il flag di occultamento corrente prima di ogni chiamata.
Bisogna notare che solo gli indicatori che sono chiamati direttamente dall'esperto in prova possono essere mostrati nel grafico di prova.
 
zhuki:

void HideTestIndicators( bool hide)
La funzione imposta il flag per nascondere gli indicatori chiamati dall'Expert Advisor. Quando il grafico viene aperto dopo il test, gli indicatori marcati con il flag di nascondere non saranno visualizzati nel grafico di test. Gli indicatori saranno contrassegnati con il flag di occultamento corrente prima di ogni chiamata.
Va notato che solo gli indicatori che sono chiamati direttamente dall'Expert Advisor sotto test possono essere mostrati nel grafico di test.

Grazie, Igor, ho dovuto imparare le basi alla cieca.
 

quindi qualcuno sa come aggiustare il codice di cui sopra per impostare il valore delle variabili in questo modo

PRAskL=StopLoss dell'ordine Buy + Spread
PRAskS=TakeProfit dell'ordine Buy + Spread
PRBidL=Ordini StopLoss Sell-Spread
PRBidS=Ordini TakeProfit Sell-Spread

 
FoxUA:

quindi qualcuno sa come aggiustare il codice di cui sopra per impostare i valori delle variabili in questo modo

PRAskL=Ordini StopLoss Compra + Spread
PRAskS=Ordini TakeProfit Compra + Spread
PRBidL=Ordini StopLoss Vendi-Spread
PRBidS=Ordini TakeProfit Vendi-Spread

Se avete errori relativi a stop sbagliati, allora fate un controllo sulla dimensione dei livelli di stop; usateli anche per controllare gli ordini pendenti - non potete mettere meno di quello...

Per esempio:

double Level_stop=MarketInfo(Symbol(),MODE_STOPLEVEL ); //distanza minima di impostazione dello stop

 
artmedia70:

Se hai degli errori relativi a stop sbagliati, allora fai un controllo sulla dimensione dei livelli di stop; usali anche per controllare gli ordini in sospeso - non è permesso il meno...

Per esempio:

double Level_stop=MarketInfo(Symbol(),MODE_STOPLEVEL ); / distanza minima di impostazione dello stop


l'ultimo si apre senza errori, ma si apre solo con i dati di Sell. è un ritaglio dal log e non è la corretta distribuzione dei prezzi che ho descritto.

Eccoli qui.

PRAskL=StopLoss Comprare + ordini Spread
PRAskS=TakeProfit di ordini Buy + Spread
PRBidL=Ordini StopLoss Sell-Spread
PRBidS=Ordini TakeProfit Sell-Spread

questo è come appare ora

PRAskL=StopLoss Ordine di vendita

PRAskS=TakeProfit Ordini di vendita

PRBidL=StopLoss Ordine di vendita

PRBidS=Ordine di vendita TakeProfit