[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 924

 
Lo principal es establecer la dirección del pensamiento... :)

Corregirlo sólo para que el hombre no se pierda... :)

¿Podría corregirme, simplemente?
 
T.H.C.:
¿Podría corregirme, por favor?

He dado un ejemplo:

Si 5 es mayor que 2, significa que 5 es mayor que 2.

Y comparando la diferencia de estos valores es que si 5-2 es mayor que cero, entonces 5 es mayor que 2

¿Está claro? La cuestión sigue siendo que se trata de las mismas matemáticas de primer grado, sólo que derivadas...

 
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];}

}




Por favor, que alguien me ayude, lo pido por cuarta vez. Estuve 3 días buscando una respuesta, el libro no dice cómo hacerlo, no pude encontrar ningún EA con tal condición. El asesor elemental abre una posición de compra al aparecer una nueva vela (siempre que las 2 velas anteriores estén en verde), y cierra la posición al cierre de la vela en la que se abrió la posición, o al cierre de la siguiente vela.

El que se ve arriba abre una posición cada vez que aparece una nueva vela, sin reaccionar al criterio de apertura, y no consigo cómo cerrar la posición, no lo he encontrado en el tutorial ni en los foros.

 
artmedia70:

Arréglalo... :)

Y no olvide la existencia de StopLev - int StLev=MarketInfo(Symbol(), MODE_STOPLEVEL);

Compruebe la distancia mínima para fijar las paradas y las retiradas, para que no sea inferior a este valor


En realidad lo compuse correctamente, pero... "StLev=MarketInfo(Symbol(),MODE_STOPLEVEL);" No sé dónde ponerlo,
ahora...

El caso es que estoy constantemente en el trabajo (no puedo instalar el programa mql4 aquí, así que tengo que hacerlo todo en mi cabeza

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

int inicio() {

int pt,dg,StLev;
double Precio_1,Precio_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=NormalizeDouble(pa-StopLoss*pt,dg);
double tpB=NormalizeDouble(pa+TakeProfit*pt,dg);
double slS=NormalizeDouble(pb+StopLoss*pt,dg);
double tpS=NormalizeDouble(pb-TakeProfit*pt,dg)

if(total<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);
}
}retorno(0);

 
T.H.C.:

Sólo lo he esbozado. Podría ser un desastre.

#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:

Sólo lo he esbozado. Podría ser un poco desordenado.

Muchas gracias, muy útil.

¿Cómo aprendió a programar? ¿Por dónde has empezado?

 
T.H.C.:

Muchas gracias, muy útil.

¿Cómo aprendió a programar? ¿Por dónde has empezado?

Estudié a partir de libros de texto, empezando por C++
 
¿Es C++ muy diferente de mql?
 
T.H.C.:
¿Es C++ muy diferente de mql?
excepto por algunas características (orientación comercial) Mql es sólo una copia muy reducida de c++
 
Techno:
excepto por algunas características (orientación comercial) Mql es sólo una copia muy reducida de c++
Oh, gracias por los consejos y el tiempo que me has dedicado