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

 
OTPOK:

Un'altra cosa - Come posso cambiare lo stoploss di un ordine già aperto in modo programmatico?


https://docs.mql4.com/ru/trading/OrderModify
 
FOReignEXchange:


Buon pomeriggio. Immagino che tu non abbia mai assegnato valori alle variabili. È molto facile da fare.

PriceBuy=Chiedi


In realtà: PriceBuy=Bid;
 
Roger:

In realtà: PriceBuy=Bid;

Beh, è una questione di opinioni. E se realisticamente, Asc.
 

Salve.

Per favore ditemi se l'espressione per calcolare la somma totale di una sequenza di numeri delta*(2*Lot+Lot*(i-2))*(i-1)/2è corretta :

for (int i=1; i<=MaxOrders; i++) {

doppio Sum=Lot;

Sum+=delta*(2*Lot+Lot*(i-2))*(i-1)/2; }

Se non ci sono errori, come sostituire il valore "Sum+" nell'espressione come X=("Sum+" + Y)/Z?

Codice sorgente:

for (int i=1; i<=MaxOrders; i++)
   {
      if (BUY)
      {
         Price = NormalizeDouble(Ask-delta*i*Point,Digits);
         double Sum=Lot;
         Sum+=delta*(2*Lot+Lot*(i-2))*(i-1)/2;
         DeltaProfitL = (Sum+i*delta*Lot+Lot*R_Lot*R_point+Lot*R_Lot*delta*i)/((2*Lot+Lot*(MaxOrders-1))*MaxOrders/2+Lot+Lot*R_Lot);
         if (takeprofit!=0) TP  = NormalizeDouble(Price + (takeprofit + DeltaProfitL*zero_tp)*Point,Digits); else TP=0;
         if (stoploss!=0)   SL  = NormalizeDouble(Price - stoploss*Point,Digits); else SL=0;     
         OPENORDER ("Buy Limit",Price,SL,TP,i);
      }
   }

Grazie in anticipo.

 
nemo811:

Salve.

Per favore ditemi se l'espressione per calcolare la somma totale di una sequenza di numeri delta*(2*Lot+Lot*(i-2))*(i-1)/2è corretta :

per (int i=1; i<=MaxOrders; i++)

doppio Sum=Lot;

Sum+=delta*(2*Lot+Lot*(i-2))*(i-1)/2;

Se non ci sono errori, come sostituire il valore "Sum+" nell'espressione come X=("Sum+" + Y)/Z?

Grazie in anticipo.


Non funzionerebbe?

for (int i=1; i<=MaxOrders; i++)

Sum=Sum+delta*(2*Lot+Lot*(i-2))*(i-1)/2;

Solo che non è chiaro perché Sum=Lot; e a cosa serve in generale.

 
FOReignEXchange:


Solo che non è chiaro perché Sum=Lot; E per cosa in generale.

Ho fatto una domanda simile a pagina 81. Ho fatto tutto secondo la risposta che mi è stata data. Ma finora non c'è alcun risultato.

Sum=Sum+delta*(2*Lot+Lot*(i-2))*(i-1)/2; - non è adatto al mio calcolo.

 
delta*(2*Lot+Lot*(i-2))*(i-1)/2 è la formula del numero della sequenza in questione. Ho bisogno di sommare TUTTI i numeri della sequenza data.
 
nemo811:
delta*(2*Lot+Lot*(i-2))*(i-1)/2 è la formula del numero della sequenza in questione. Ho bisogno di sommare TUTTI i numeri della sequenza data.


Così ho scritto una formula per questo.

Ho capito che devi calcolare qualcosa come questo

Somma =delta*(2*Lot+Lot*(1-2))*(1-1 )/2 +delta*(2*Lot+Lot*(2-2))*(2-1 )/2 +delta*(2*Lot+Lot*(3-2))*(3-1)/2 + ... ecc.

Questa è la formula Sum=Sum+delta*(2*Lot+Lot*(i-2))*(i-1)/2, dove si impostano i limiti per i nel corpo dell'operatore. Quando l'operatore finisce, Sum prenderà il valore desiderato. È importante che Sum sia uguale a zero prima che l'operatore inizi a fare i calcoli. All'uscita dell'operatore Sum prenderà il valore desiderato.

 

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.....

 
for (int i=1; i<=MaxOrders; i++)
   {
      if (BUY)
      {
         Price = NormalizeDouble(Ask-delta*i*Point,Digits);
         double Sum=0;
         Sum=Sum+delta*(2*Lot+Lot*(i-2))*(i-1)/2;   ........
      }
}
Grazie. È la cosa giusta da fare?
Motivazione: