[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 86

 
nemo811:
Grazie. È la cosa giusta da fare?

Sì, credo di sì.
 
No. Sum=0 deve essere posto prima dell 'istruzione For.
 
6166961669:

Non sono sicuro di quanto costerebbe ordinare un EA, ma sono sicuro di poterlo far funzionare in entrambi i grafici.

Ah, e in generale è possibile farlo funzionare una volta per 2 valute diverse (simultaneamente su due grafici) e aperto su ciascuno dei diversi trade.

Per esempio, ho comprato sul primo e venduto sul secondo?

E alla chiusura di una delle transazioni aperte il contrario della transazione già aperta....

E forse qualcuno lo sa, forse esiste un tale Expert Advisor, solo una buona idea mi è venuta in mente.....


Tutto può essere fatto. Per favore, scrivetemi di persona. Faremo un accordo.
 
FOReignEXchange:
Oh, no. Sum=0 dovrebbe essere messo prima dell'operatore For.

Funziona tutto. Grazie. Ho trovato un altro errore nel processo.

Farò un po' più di lavoro per vedere se salta fuori qualcos'altro, e posterò il risultato nel database generale.

Grazie ancora per il vostro aiuto.

 
nemo811:

Funziona tutto. Grazie. Ho trovato un altro errore nel processo.

Farò un po' più di lavoro per vedere se salta fuori qualcos'altro, e posterò il risultato nel database generale.

Grazie ancora per tutto il vostro aiuto.


Non c'è di che. Non c'è di che.
 

A: FOReignEXchange

Se a questo punto dell'esecuzione del programma

extern bool Buy = true;

extern double PriceBuy = 0;

int start()
{
if (Buy)
{OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-50*Point,Ask+50*Point);
PriceBuy = ??????????????????;}

return;
}

Specifico l'assegnazione" PriceBuy = ??????????????????;" - "PriceBuy = Ask;"

Posso essere sicuro che mentre il programma procede (cioè aprendo un nuovo ordine con le condizioni specificate)

"PriceBuy avrà lo stesso valore?

 
OTPOK:

A: FOReignEXchange

Se a questo punto dell'esecuzione del programma

extern bool Buy = true;

extern double PriceBuy = 0;

int start()
{
if (Buy)
{OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-50*Point,Ask+50*Point);
PriceBuy = ??????????????????;}

return;
}

Specifico l'assegnazione" PriceBuy = ??????????????????;" - "PriceBuy = Ask;"

Posso essere sicuro che mentre il programma procede (cioè aprendo un nuovo ordine con le condizioni specificate)

"PriceBuy avrà lo stesso valore?


Come può extern double PriceBuy = 0? Solo le costanti sono specificate nelle variabili globali. Se viene rimosso del tutto, la risposta è la seguente:

Se non vengono assegnati altri valori alla variabile PriceBuy altrove, il valore di PriceBuy = Ask; rimarrà valido fino a quando i calcoli non raggiungeranno nuovamente la nuova apertura dell'ordine. Una volta arrivati di nuovo lì, alla variabile verrà assegnato il nuovo valore PriceBuy = Ask; che corrisponderà al prezzo Ask al momento di aprire il nuovo ordine.

Qual è il problema? È chiaro.

 
FOReignEXchange:


Come è extern double PriceBuy = 0 ? Solo i numeri costanti sono specificati nelle variabili globali.

Per favore, non confondete i nostri principianti.

Primo: la variabile PriceBuy in questo caso è una variabile esterna. E una variabile esterna è globale per definizione!

Secondo: Si può assegnare qualsiasi valore a una variabile esterna nel codice dell'EA, ma poi perderà il suo significato (essere una variabile esterna). E le variabili globali sono appunto usate per memorizzare e cambiare i loro valori all'interno dell'intero codice (lo scopo - l'intero programma). Leggi di più.

In terzo luogo, se c'è uno Slippage nella funzione di compravendita OrderSend e vogliamo aprire un ordine di acquisto, l'ordine non si aprirà necessariamente al prezzo Ask perché l'esecuzione di un ordine di compravendita emesso dalla funzione OrderSend richiede del tempo e il prezzo può allontanarsi da quel valore.

Il codice mostrato nella pagina precedente sarà più corretto:

abolk:
extern bool Buy = true;
extern double PriceBuy = 0; 
int start() 
{
   if(Buy) 
   {
     int ticket=OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-50*Point,Ask+50*Point);
     if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
        PriceBuy=OrderOpenPrice();
   }
   return(0); 
}
 
MaxZ:

Pertanto, il codice più corretto è quello già citato nella pagina precedente, e cito:


"È il modo in cui ti piace. La calligrafia di ognuno è diversa. Forse la tua scrittura è corretta, ma a me sembra disordinata.

Io non lo farei in questo modo.

Prima di tutto, non sono sicuro del perché dovrei dichiarare una variabile lì e non capisco nemmeno quale sia il suo scopo.

In secondo luogo, la linea PriceBuy = Ask; si trova subito dopo la funzione OrderSend. E per quanto ho capito, i calcoli vengono immediatamente passati alla linea successiva non appena questa funzione finisce la sua esecuzione. Non credo che il prezzo di Ask possa cambiare. Cerco di scrivere tutto nel modo più semplice possibile, riducendo il numero di caratteri, se non interferisce con il normale funzionamento del programma. Posso assegnare un valore nello stesso modo in cui lo fai tu, non vedo un problema qui. Ho scritto la prima e più semplice cosa che mi è venuta in mente.

 
Giusto. Giusto. Ho sbagliato il nome della variabile. Te lo concedo. La tua teoria è buona. Ma la sua logica non lo è.