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

 

Ciao! Non riesco a capire cosa c'è di sbagliato in ???? Non modifica gli ordini a mercato
slb =NormalizeDouble(Bid - (StopLoss * Point),Digits); // calcola lo stop per le posizioni di acquisto//
tpb =NormalizeDouble(Ask + (TakeProfit* Point),Digits); // calcola il profitto per le posizioni di acquisto//
sls =NormalizeDouble(Ask + (StopLoss * Point),Digits) // calcolo dello stop per le posizioni di vendita//
tps =NormalizeDouble(Bid - (TakeProfit* Point),Digits);

//================================================== ==================//
int total=OrdersTotal();
int n=0;
for (int i=total-1; i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS))
{
if(OrderSymbol()==Symbol())
{
n++;
}}}
if ( total == 1 )
{
for (int k=total-1; k>=0; k--)
{
if(OrderSelect(k, SELECT_BY_TICKET)
Alert("order is", k);
{
if ((OrderType()==OP_BUY)&&(OrderTakeProfit()==0)&&(O rderStopLoss()==0))
{
OrderModify(k,OrderOpenPrice(),slb,tpb,0,Blue);
Alert("error", GetLastError());

}}}}
return(0);}

QUAL È IL PROBLEMA PER FAVORE AIUTATE ...........?????

 

Qualsiasi domanda del nuovo arrivato, per non ingombrare il forum. Non lasciatevi sfuggire i professionisti. Non è da nessuna parte senza di te.

 
belck:

Qualsiasi domanda da principiante, per non ingombrare il forum. Non lasciatevi sfuggire i professionisti. Non è da nessuna parte senza di te.

Dove vuoi arrivare? È un po' come se ti fosse permesso di chiedere del tempo... o la salute... :))))))
 


Scusate, non capisco quale sia il problema. Penso di non aver mai soddisfatto la condizione while, perché se metto Comment all'interno del ciclo, non si riflette. Inoltre sopra il ciclo ho la variabile B uguale al normale valore atteso, come 0.0011, ma se la moltiplico per Point, viene fuori 0!!!!

int start()

{
double A,B,C ;A=Close[1];B=Close[Bars];
C=A-B ;Comment("Value of differencei ", B*Point);
while (B*Point >Swing)
{ Comment("Valore della differenza ", B);
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-stoploss*Point,Ask+TakeProfit*Point,"macd sample",16384,0,Green);}

while (0-B*Point<Point)
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+stoploss*Point,Bid-TakeProfit*Point,"macd sample",16384,0,Red);

Alert("Value ", B);

Comment("Value differencei ",B);

//----

//----
return(0);
}

 

Non sono sicuro, ma il modo corretto sarebbe

int start()

{
double A,B,C ;A=Close[1];B=Close[bars]; Cosa significa Close[bars]; ???? Chiudi[sequenza di numeri di barre all'indietro, senza corrente]

chiusura della candela precedente[1]. chiusura della candela precedente[2]

B=(A-B)*Point ; Comment("Value of difference ", B); B sarà uguale alla chiusura della candela precedente meno la chiusura della candela che avete impostato in B= close [....]
mentre (B > B) e molto probabilmente non mentre a se la condizione
{ Commento("Differenza di valore ", B);
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-stoploss*Point,Ask+TakeProfit*Point, "macd sample",16384,0,Green);

}

while (0-B<Round) e molto probabilmente non mentre una condizione if

{

OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+stoploss*Point,Bid-TakeProfit*Point, "macd sample",16384,0,Red);
}
Alert("Value ",B);

Comment("Value differencei ",B);

//----

//----
return(0);
}
Potrebbe essere sbagliato.....

 
Grazie!!! Farò un tentativo. Per tre giorni non riesco a capire cosa c'è che non va, tecnicamente tutto sembra giusto.
 
No, è la stessa cosa, grazie per la risposta. Non so quale sia il problema.
 

Ci sono molti errori nel tuo codice ...... cosa vuoi fare, quale risultato? Non ci dovrebbero essere lettere russe...

Non puoi avere C nel foglio di calcolo perché C ha un numero in memoria come 1,23456

0-B sarebbe un numero negativo....

 

ed è meglio calcolare il profitto e la perdita come segue

slb =NormalizeDouble(Bid - (StopLoss * Point),Digits); // calcola lo stop per le posizioni di acquisto//
tpb =NormalizeDouble(Ask + (TakeProfit* Point),Digits); // calcola il profitto per le posizioni di acquisto//
sls =NormalizeDouble(Ask + (StopLoss * Point),Digits) // calcola lo stop per le posizioni di vendita//
tps =NormalizeDouble(Bid - (TakeProfit* Point),Digits); // calcola il profitto per le posizioni di vendita//

 
Dimka-novitsek:


Scusate, non capisco quale sia il problema. Penso di non aver mai soddisfatto la condizione while, perché se metto Comment all'interno del ciclo, non si riflette. Inoltre sopra il ciclo ho la variabile B uguale al normale valore atteso, come 0.0011, ma se la moltiplico per Point, viene fuori 0!!!!

int start()

{
double A,B,C ;A=Close[1];B=Close[Bars];
C=A-B ;Comment("Value of differencei ", B*Point);
while (B*Point >Swing)
{ Comment("Valore della differenza ", B);
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-stoploss*Point,Ask+TakeProfit*Point,"macd sample",16384,0,Green);}

while (0-B*Point<Point)
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+stoploss*Point,Bid-TakeProfit*Point,"macd sample",16384,0,Red);

Alert("Value ", B);

Comment("Value differencei ",B);

//----

//----
return(0);
}

E lei corteggia che bisogna moltiplicare la differenza tra A e B per Punto?

I valori di A e B sono numeri reali. Moltiplicando la loro differenza per Punto, si aumenta ulteriormente il numero di cifre decimali. Se avete bisogno di ottenere un intero da confrontare con un intero "Spread", dovreste piuttosto dividere per Punto.

Motivazione: