[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 334

 
khorosh:
Чем отличается POINT от TICKSIZE ? При запросе через MarketInfo() одинаковы, но чем то же они должны отличаться раз по разному называются?
Чем отличается POINT от TICKSIZE site:mql4.com
 
khorosh:
Чем отличается POINT от TICKSIZE ? При запросе через MarketInfo() одинаковы, но чем то же они должны отличаться раз по разному называются?

Бывает что различаются для отдельных инструментов
 
Vinin:

Бывает что различаются для отдельных инструментов
Спасибо. Пункт это как копейка-единица измерения. А тиксайз это минимальное изменение цены. По-видимому тиксайз меньше пункта не может быть, а больше может. Наверно, это определяет ДЦ.
 
Подскажите, пожалуйста, возможно ли из MQL запустить макрос в книге EXCEL (она открыта)?
 
rustein:
Как рассчитать максимально допустимый размер лота с учетом плеча итд?
Спасибо
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:

Большое Большое Спасибо
 

ПОМОГИТЕ ПРИКРЕПИТЬ ФАЙЛ К ТЕКСТУ

 
Друзья, помогите разрешить проблемку... в массив TicketArray у меня записываются номера тикетов (их 3 штуки). И вот мне хочется, чтоб когда я 3 раза подряд получу лося, то советник перестал торговать... для начала не могу написать условие 3х лосей... Добрый змей как-то давно дал мне знания о флагах, я их теперь широко использую, но все равно что-то не выходит. Совестник после закрытия в лоссе первого ордера вощвращает true, а потом работает нормально... почему?

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);

выкладываю весь советник на всякий случай. Это обычный мартингейл, который я написал сам из образовательных целей.

//+------------------------------------------------------------------+
//| 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");
} 
} 
 

Не получается прочитать один из буферов индикатора PerkyAsctrend1.
Помогите, пожалуйста, разобраться. Много раз это делал с другими индикаторами, всегда без проблем. Тут же не получается.
Читаю два буфера: один из них:
double PerkyBuf2=iCustom (NULL,0," PerkyAsctrend1 ",5,250,0,1); - читается корректно, сигнал ловится, следующей строкой пытаюсь ловить:
double PerkyBuf1=iCustom (NULL,0," PerkyAsctrend1 ",5,250,1,1); и все сигналы этого буфера пролетают мимо моего эксперта. Пробовал даже создать пустой эксперт с двумя этими точками Comment() с резульаттами на экран выводил. Не ловится сигнал для sell.
Помогите разобраться.
Индикатор прилагаю
Файлы:
 
Qoren:

Не получается прочитать один из буферов индикатора PerkyAsctrend1.
Помогите, пожалуйста, разобраться. Много раз это делал с другими индикаторами, всегда без проблем. Тут же не получается.
Читаю два буфера: один из них:
double PerkyBuf2=iCustom (NULL,0," PerkyAsctrend1 ",5,250,0,1); - читается корректно, сигнал ловится, следующей строкой пытаюсь ловить:
double PerkyBuf1=iCustom (NULL,0," PerkyAsctrend1 ",5,250,1,1); и все сигналы этого буфера пролетают мимо моего эксперта. Пробовал даже создать пустой эксперт с двумя этими точками Comment() с резульаттами на экран выводил. Не ловится сигнал для sell.
Помогите разобраться.
Индикатор прилагаю

Сигнал для Buy в буфере 0, сигнал для Sell в буфере 1

Скрипт для проверки:

//+------------------------------------------------------------------+
//|                                                         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);
  }
//+------------------------------------------------------------------+
Причина обращения: