[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 334

 
khorosh:
¿Cuál es la diferencia entre POINT y TICKSIZE? Cuando se consulta a través de MarketInfo() son los mismos, pero ¿por qué deberían ser diferentes si tienen nombres distintos?
¿Cuál es la diferencia entre POINT y TICKSIZE site:mql4.com
 
khorosh:
¿Cuál es la diferencia entre POINT y TICKSIZE? Cuando se consultan a través de MarketInfo(), son los mismos, pero ¿por qué deberían ser diferentes si tienen nombres distintos?

A veces son diferentes para cada instrumento
 
Vinin:

A veces hay una diferencia para los instrumentos individuales
Gracias. Un punto es como una unidad de medida de un céntimo. Tixais es el cambio mínimo en el precio. Al parecer, los tixis no pueden ser inferiores a un pip y más. Supongo que es el CB quien debe decidir.
 
¿Pueden decirme si es posible ejecutar una macro desde MQL en un libro de EXCEL (está abierto)?
 
rustein:
¿Cómo puedo calcular el tamaño máximo del lote permitido con el apalancamiento, etc.?
Gracias
double MeansOneLot       = MarketInfo(Symb,MODE_MARGINREQUIRED);      //Необходимо средств для открытия 1 лота
double MeansFree         = AccountFreeMargin();                       //Значение свободных средств, разрешенных для открытия позиций
double MeansGuaranty     = AccountMargin();                           //Значение залоговых средств, используемых для поддержания открытых позиций
double LotPriceTic       = MarketInfo(Symb, MODE_TICKVALUE);          //Стоимость 1 лота в валюте депо на 1 тик
double MaxLotPermissible = MathFloor((MeansFree/MeansOneLot)*100)/100;//Максимально допустимый лот для открытия позиции
 
joo:

Muchas gracias.
 

AYUDA PARA ADJUNTAR EL ARCHIVO AL TEXTO

 
Amigos, ayúdenme a resolver un problema... Tengo los números de los tickets escritos en el array TicketArray (hay 3 de ellos). Entonces, quiero que mi EA deje de operar cuando tenga una pérdida 3 veces seguidas... Para empezar, no puedo escribir la condición de 3 lotes... La Buena Serpiente me dio una vez algunos conocimientos sobre las banderas y los estoy usando ahora, pero sigue sin funcionar. Después de que la primera orden se cierre en pérdida, se convierte en verdad, y entonces funciona bien... ¿Por qué?

bool flag = true; //по умолчанию флаг стоит на правду
for(int j=1;j<4;j++) //цикл из 3х значений (1,2,3)
{
OrderSelect(TicketArray[j],SELECT_BY_TICKET); //выбираю ордер

if(OrderClosePrice()!=OrderStopLoss() && TicketArray[j]==0)flag = false; //думаю, тут проблема. Условие: если ордер не получил лося 3 раза и если у тикета еще нет номера, то такая ситуация меня не устраивает.
Print(OrderClosePrice(),",,,,,",OrderStopLoss(),",,,,,",TicketArray[j]); //эта строчка для тестера, чтоб наглядно было видно цену закрытия, цену стопа и номер тикета. Хоть тикет и =0, но все равно пишет true.
}
Alert(flag);

Pego el EA completo por si acaso. Esta es una martingala normal, que escribí yo mismo con fines educativos.

//+------------------------------------------------------------------+
//| StMartin.mq4 |
//| Sergey Kodolov |
//| 84232676421@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Sergey Kodolov"
#property link "84232676421@mail.ru"

extern int TP = 1000; 
extern int TS = 1000; 
extern int TF = 1; 
extern double lots = 0.1; 


double volumz;
int ticket,total;
int slip = 3; 
int Magic = 4; 

int TicketArray[4];

void FormTicket(int number) //объявил шаблон под функцию запоминания тикетов
{
for(int i=3;i>0;i--)
{
TicketArray[0] = ticket;
if(TicketArray[0]>0 && TicketArray[0] == TicketArray[1])break;
TicketArray[i] = TicketArray[i-1];
} 
}

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,slip,Bid-TS*Point,Bid+TP*Point,"First order",Magic,0,Yellow); //открываем первый ордер
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int OrderTimeCheck = check3(); //проверяем, закрыт ли ордер
bool OrderCloseCheck = check2(OrderTimeCheck); //проверяем, закрылись ли ордера в минус
FormTicket(ticket); //вызываем функцию, чтоб запоминала тикеты
ProfitCheck(OrderCloseCheck); //тут рисуем линии

total = OrdersTotal();
if(total < 1)
{
OrderSelect(TicketArray[1],SELECT_BY_TICKET);
volumz = OrderLots();
if(OrderProfit()<=0)
{
if(OrderType() == OP_BUY)
{ 
double lot1 = volumz*2;
ticket = OrderSend(Symbol(),OP_SELL,lot1,Bid,slip,Ask+TS*Point,Ask-TP*Point,0,Magic,0,Green);
}
if(OrderType() == OP_SELL)
{ 
double lot2 = volumz*2;
ticket = OrderSend(Symbol(),OP_BUY,lot2,Ask,slip,Bid-TS*Point,Bid+TP*Point,0,Magic,0,Red);
}
}
if(OrderProfit()>0)
{
if(OrderType() == OP_BUY)
{
ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,slip,Bid-TS*Point,Bid+TP*Point,0,Magic,0,Green);
}
if(OrderType() == OP_SELL)
{
ticket = OrderSend(Symbol(),OP_SELL,lots,Bid,slip,Ask+TS*Point,Ask-TP*Point,0,Magic,0,Red);
}
} 

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


int check3() //проверяем, закрыт ли ордер
{
OrderSelect(TicketArray[1],SELECT_BY_TICKET);
if(OrderCloseTime()>0)return(100);
}

bool check2(int OrderTimeCheck) //проверяем, если ордер закрыт, то последние 3 закрытых ордера были ли убыточными?
{
if(OrderTimeCheck == 100)
{
bool flag = true;
for(int j=1;j<4;j++)
{
OrderSelect(TicketArray[j],SELECT_BY_TICKET);

if(OrderClosePrice()!=OrderStopLoss() && TicketArray[j]==0)flag = false; //ТУТ ДОДУМАТЬ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Print(OrderClosePrice(),",,,,,",OrderStopLoss(),",,,,,",TicketArray[j]);
}
Alert(flag);
if(flag == true)
{
ObjectCreate("NewLabel",OBJ_LABEL,0,0,0);
ObjectSetText("NewLabel","Ура",14,"Arial",Aqua);
ObjectSet("NewLabel", OBJPROP_CORNER,1);
ObjectSet("NewLabel", OBJPROP_XDISTANCE,40);
ObjectSet("NewLabel", OBJPROP_YDISTANCE,40);
}
} 
}

void ProfitCheck(bool OrderCloseCheck)
{
if(OrderCloseCheck == true) 
{
Print("x");
} 
} 
 

No se puede leer uno de los buffers del indicador PerkyAsctrend1.
Por favor, ayúdenme a resolverlo. Lo he hecho muchas veces con otros indicadores, siempre sin problemas. No puedo hacerlo aquí.
Leo dos búferes: uno de ellos:
double PerkyBuf2=iCustom (NULL,0," PerkyAsctrend1 ",5,250,0,1); - lee correctamente, la señal es capturada, la siguiente línea intenta capturar:
double PerkyBuf1=iCustom (NULL,0," PerkyAsctrend1 ",5,250,1,1); pero todas las señales de este búfer pierden mi Asesor Experto. Incluso he intentado crear un Asesor Experto vacío con dos puntos de Comment() con resultados. No puedo obtener una señal para vender.
¿Puede ayudarme a entenderlo?
Me gustaría adjuntar el indicador
Archivos adjuntos:
 
Qoren:

No se puede leer uno de los buffers del indicador PerkyAsctrend1.
Por favor, ayúdenme a entenderlo. Lo he hecho muchas veces con otros indicadores, siempre sin problemas. Pero aquí no funciona.
He leído dos topes: uno de ellos:
double PerkyBuf2=iCustom (NULL,0," PerkyAsctrend1 ",5,250,0,1); - lee correctamente, la señal es capturada, la siguiente línea intenta capturar:
double PerkyBuf1=iCustom (NULL,0," PerkyAsctrend1 ",5,250,1,1); y todas las señales de este buffer pasan por mi EA. Incluso he intentado crear un Asesor Experto vacío con dos puntos de Comment() con resultados. No puedo obtener una señal para vender.
¿Puede ayudarme a entenderlo?
Me gustaría adjuntar el indicador

Señal de compra en el buffer 0, señal de venta en el buffer 1

Guión para probar:

//+------------------------------------------------------------------+
//|                                                         Test.mq4 |
//|                             Copyright © 2011, Trishkin Artyom A. |
//|                                           support@goldsuccess.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, Trishkin Artyom A."
#property link      "support@goldsuccess.ru"
//                   Skype: artmedia70

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   int count=WindowBarsPerChart();
   for (int i=0; i<count; i++) {
      double buf0=iCustom(Symbol(),Period(),"PerkyAsctrend1_1",4,250,0,i);
      double buf1=iCustom(Symbol(),Period(),"PerkyAsctrend1_1",4,250,1,i);
      if (buf0!=EMPTY_VALUE) Alert("В буфере 0 на баре ",iBarShift(Symbol(),Period(),Time[i])," сигнал на Buy = ",DoubleToStr(buf0,Digits));
      if (buf1!=EMPTY_VALUE) Alert("В буфере 1 на баре ",iBarShift(Symbol(),Period(),Time[i])," сигнал на Sell = ",DoubleToStr(buf1,Digits));
      }
//----
   return(0);
  }
//+------------------------------------------------------------------+
Razón de la queja: