Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 608

 
solnce600:

Buona giornata a tutti!

Potreste dirmi il modo migliore per codificare la seguente condizione

Se tutte le candele da 1 a 20 sono ribassiste senza eccezione (il numero di punti tra l'apertura e la chiusura di ogni candela non ha importanza)

Per aprire un ordine.

L'unico modo per farlo è quello di scrivere un ordine "make-work".


Se potessi scriverlo "a mano".

if(f) OrderSend(...); // открыть ордер Sell


bool f()
{
   for(int i = 1; i <= 20; i++)
    {
     if(Open[i] < Close[i]) return(false);
    }
    return(true);
}
 
AlexeyVik:

Beh, a meno che non sia scritto sul posto.


Grazie mille.
 
fmv_for_a_way:

Cittadini, potete dirmi perché il terminale Alpari non è in grado di effettuare un ordine?

La funzione OrderSend si presenta così

Non ci sono parametri uguali a zero. Ho controllato.

La distanza minima di arresto e di guadagno secondo le condizioni del terminale = 0,1.

Il terminale genera l'errore 130 e scrive di un profitto o di uno stop non valido.

I parametri SL e TP sono 11 e 1 (dopo la normalizzazione), rispettivamente.

Sui terminali Aforex, Diven FX, ForexClub, AlfaForex - nessun problema con lo stesso codice.

Per Buy Stop e Take sono contati dal prezzo Bid - questo è uno.

Secondo - dal momento che i prezzi di stop sono calcolati, devono essere normalizzati. La precedente normalizzazione di SL e TP non è nulla. Poi nell'ordine di compravendita si sostituisce il valore non normalizzato dell'espressione.

In terzo luogo, tutti i prezzi devono rispettare i requisiti e le restrizioni del commercio. Il livello StopLevel, per esempio, può essere maggiore della dimensione dell'ordine stop.

 

Per favore, consigliatemi il perché di questo.

Ci sono tre condizioni (in grassetto), quando eseguite simultaneamente, un ordine è aperto con successo.

int start()

{

int ot = OrdiniTotali();

int index=iHighest(NULL,0,MODE_HIGH,20,1);
int index1=iLowest(NULL,0,MODE_HIGH,20,1);
int index3=iLowest(NULL,0,MODE_HIGH,40,20);

if(Low[index1]==Low[1])

if(High[index]==High[20])

if(Low[index3]==Low[40]

se ( Bid==Low[40])

se (ot==0)

OrderSend(Symbol(),OP_SELL,0.1,Bid,1,Ask+1500*Point,Ask-300*Point, "jfh",123 );

PROBLEMA

Non appena aggiungo una quarta condizione (segnata in rosso), un ordine viene aperto SOLO se la quarta condizione è soddisfatta.

Letre condizioni precedenti sono ignorate dal programma.

Ho provato a scrivere le condizioni attraverso &&.... non funziona

Come fare in modo che il mandato venga aperto quando tutte e quattro le condizioni sono soddisfatte simultaneamente.

Grazie.

 
solnce600:

Per favore, consigliatemi il perché di questo.

Ci sono tre condizioni (evidenziate in grassetto) che, se eseguite contemporaneamente, aprono con successo un ordine.

int start()

{

int ot = OrdiniTotali();

int index=iHighest(NULL,0,MODE_HIGH,20,1);
int index1=iLowest(NULL,0,MODE_HIGH,20,1);
int index3=iLowest(NULL,0,MODE_HIGH,40,20);

if(Low[index1]==Low[1])

if(High[index]==High[20])

if(Low[index3]==Low[40]

se ( Bid==Low[40])

se (ot==0)

OrderSend(Symbol(),OP_SELL,0.1,Bid,1,Ask+1500*Point,Ask-300*Point, "jfh",123 );

PROBLEMA

Appena aggiungo una quarta condizione (segnata in rosso), l'ordine si apre SOLO quando la quarta condizione è soddisfatta.

Il programma ignorale tre condizioni precedenti.

Ho provato a scrivere le condizioni attraverso &&.... non funziona

Come fare in modo, che il mandato sarebbe stato aperto in una volta esecuzione di tutte e quattro le condizioni.

Grazie.

Espandi le parentesi graffe come l'algoritmo dovrebbe funzionare.
 
artmedia70:

Per il Buy, lo stop e il take sono calcolati dal prezzo Bid - questo è uno.

In secondo luogo, se si calcolano i prezzi degli ordini stop, questi devono essere normalizzati. Il fatto che SL e TP siano stati normalizzati prima non è un grosso problema. Poi nell'ordine di compravendita si sostituisce il valore non normalizzato dell'espressione.

In terzo luogo, tutti i prezzi devono rispettare i requisiti e le restrizioni per le operazioni di trading. Il livello di StopLevel, per esempio, può essere più grande della dimensione dell'ordine stop.



su alpari da ieri è passato all'esecuzione a mercato cioè

Prima compra/vendi sl=0;tp=0; poi modifica sl=100;tp=300;

 
AlexeyVik:
Espandi le parentesi graffe come l'algoritmo dovrebbe funzionare.

Grazie.
 
pako:


su alpari da ieri è passato all'esecuzione a mercato cioè

prima compra/vendi sl=0;tp=0; poi modifica sl=100;tp=300;

Anche questo è nello stesso posto. Naturalmente - uno non contraddice l'altro. Conta gli ordini di stop per comprare da Ask. Non li normalizza. Non controlla il limite di distanza di StopLevel.

In breve: un guazzabuglio.

 
Grande, le domande vengono cancellate, grande.
 
pako:


Alpari è passato all'esecuzione a mercato da ieri, cioè

prima compra/vendi sl=0;tp=0; poi modifica sl=100;tp=300;


Grazie per i consigli. Ci darò un'occhiata. Passare all'esecuzione a mercato significa che anche gli ordini pendenti devono essere piazzati con zero stop e profitti e poi modificati?
Motivazione: