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

 
La cosa principale è impostare la direzione del pensiero... :)

Correggetelo solo perché l'uomo non si perda... :)

Potrebbe correggermi, semplicemente?
 
T.H.C.:
Potresti correggermi, per favore?

Ho fatto un esempio:

Se 5 è maggiore di 2, significa che 5 è maggiore di 2.

E confrontando la differenza di questi valori, se 5-2 è maggiore di zero, allora 5 è maggiore di 2

È chiaro? Il punto rimane - è tutta la stessa matematica da prima elementare, solo derivata...

 
extern double Lot=0.01; // Жестко заданное колич. лотов
datetime time;
//--------------------------------------------------------------- 2 --
int start()
{
int Total;


bool
Ans =false, // Ответ сервера после закрытия
Cls_B=false, // Критерий для закрытия Buy
Cls_S=false, // Критерий для закрытия Sell
Opn_B=false, // Критерий для открытия Buy
Opn_S=false; // Критерий для открытия Sell

//--------------------------------------------------------------- 3 --
// Учёт ордеров


for(int i=OrdersTotal()-1;i>=0;i--)
if (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()>1)Total++;

if(Total!=0 || time==Time[1])return;

static int KolBars;



if (Close[0]-Open[0] > Point && Close[1]-Open[1] > Point && Bars == KolBars)


{

KolBars=Bars ; // запоминаем кол-во бар при которых совершались действия

}




// Торговые критерии

// Критерий откр. Buy


Opn_B=true;

//--------------------------------------------------------------- 7 --


if (Opn_B)
{OrderSend(Symbol(),OP_BUY,Lot,Ask,0,0,0);time=Time[1];}

}




Per favore, qualcuno mi aiuti, lo chiedo per la quarta volta. Ho passato 3 giorni a cercare una risposta, il libro non dice come fare, non ho trovato nessun EA con una tale condizione. Il consulente elementare apre una posizione di acquisto all'apparizione di una nuova candela (a condizione che le 2 candele precedenti siano verdi), e chiude la posizione alla chiusura della candela sulla quale la posizione è stata aperta, o alla chiusura della candela successiva.

Quello che vedi sopra apre una posizione ogni volta che appare una nuova candela, senza reagire al criterio di apertura, e non capisco come chiudere la posizione, non l'ho trovato nel tutorial o sui forum.

 
artmedia70:

Risolvi il problema... :)

E non dimenticate l'esistenza di StopLev - int StLev=MarketInfo(Symbol(), MODE_STOPLEVEL);

Controllate la distanza minima per impostare le fermate e i prelievi, in modo che non sia inferiore a questo valore


Comunque, sembra essere corretto, ma... "StLev=MarketInfo(Symbol(),MODE_STOPLEVEL);" non so dove metterlo,
ora...

Il fatto è che sono costantemente al lavoro (non posso installare il programma mql4 qui, quindi devo fare tutto nella mia testa

extern double StopLoss=100.0;
extern double TakeProfit=100.0;
extern double Lots=0.01;
extern int total;
extern int SetOrderDistance=50;

int start() {

int pt,dg,StLev;
double Price_1,Price_2,min,max,pa,pb;
RefreshRates();

pt=MarketInfo(Symbol(),MODE_POINT);
dg=MarketInfo(Symbol(),MODE_DIGITS);
pa=MarketInfo(Symbol(),MODE_ASK);
pb=MarketInfo(Symbol(),MODE_BID);
Price_1=pb;
Price_2=pa;
min=iLow(NULL,0,2);
max=iHigh(NULL,0,2);
total=OrdersTotal();
double slB=NormalizzareDouble(pa-StopLoss*pt,dg);
double tpB=NormalizzareDouble(pa+TakeProfit*pt,dg);
double slS=NormalizzareDouble(pb+StopLoss*pt,dg);
double tpS=NormalizzareDouble(pb-TakeProfit*pt,dg)

se(totale<1) {

if(Price_1>max)
OrderSend(Symbol(),OP_BUY,Lots,pa,5,slB,tpB, "My order#,16384,0,Green);

if(Price_2<min)
OrderSend(Symbol(),OP_SELL,Lots,pb,5,slS,tpS, "My order#,16384,0,Green);
}
}return(0);

 
T.H.C.:

L'ho solo abbozzato, potrebbe essere un casino.

#define Mag 464564564
extern double Lot=0.01;

int start()
{
int Total;

for(int i=OrdersTotal()-1;i>=0;i--)
if (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()<2&&OrderMagicNumber()==Mag)
       {Total++;
       if(Volume[0]<4)close();
       }

if(Total!=0)return;
if(Close[1]>Open[1]&&Close[2]>Open[2]&&Volume[0]>4)bue();
if(Close[1]<Open[1]&&Close[2]<Open[2]&&Volume[0]>4)sell();

}
void bue()
{
OrderSend(Symbol(),0,Lot,NormalizeDouble(Ask,Digits),5,0,0,0,Mag);
}
//----
void sell()
{
OrderSend(Symbol(),1,Lot,NormalizeDouble(Bid,Digits),5,0,0,0,Mag);
}
void close()
{
double pr;if(OrderType()==0)pr=Bid;if(OrderType()==1)pr=Ask;
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(pr,Digits),5);
}
 
Techno:

L'ho solo abbozzato, potrebbe essere un po' disordinato.

Grazie mille, molto utile.

Come hai imparato a programmare? Da dove hai iniziato?

 
T.H.C.:

Grazie mille, molto utile.

Come hai imparato a programmare? Da dove hai iniziato?

Ho studiato dai libri di testo, iniziando con C++
 
Il C++ è molto diverso da mql?
 
T.H.C.:
Il C++ è molto diverso da mql?
tranne che per alcune caratteristiche (orientamento commerciale) Mql è solo una copia molto ridotta di c++
 
Techno:
tranne che per alcune caratteristiche (orientamento commerciale) Mql è solo una copia molto ridotta di c++
Oh, grazie per i consigli e il tempo che mi hai dato
Motivazione: