Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Опубликуй статью. Мы сами переведем ее на другие языки!
Alexander Pavlov
1627
Alexander Pavlov 2014.08.25 16:17 
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//--- input parameters
input string Commentation1= "";//Параметры ордера:
input double    Lot=1;// Объем в лотах
input double    StopLoss=500;// Stop Loss
input double    TakeProfit=500;// Take Profit
input double    ProfitInPercent=1;// Требуемая прибыль в % от баланса
enum comm 
  {
   S,     // Текущий график
   };
input comm Money1= S;// Символ № 1
input string Money№2= "USDCHF";// Символ № 2
input string Money№1_SELL_or_BUY="Auto";// Символ № 1: продавать (SELL), покупать (BUY) или робот (Auto)?
input string Money№2_SELL_or_BUY="Auto";// Символ № 2: продавать (SELL), покупать (BUY) или робот (Auto)?
enum Tr 
  {
   AutoD = 0,     // Парные
   AutoM = 1,     // Зеркальные
   };
input Tr Auto= AutoM;// Какие у вас символы (для роботизированной торговли)
//extern bool   OpenOnTrend=false;
input int    Try=10;// Сколько раз пытаться открыть ордер
input string Commentation2= "";//Работа по расписанию:
//extern int    Open_HourTradeFirstDayOfWork        = 2;
input bool   Monday=true;// Понедельник (True - работает, False - отключен)
input bool   Tuesday=true;// Вторник (True - работает, False - отключен)
input bool   Wednesday=true;// Среда (True - работает, False - отключен)
input bool   Thursday=true;// Четверг (True - работает, False - отключен)
input bool   Friday=true;// Пятница (True - работает, False - отключен)
input int    Close_HourTradeLastOfWork       = 22;// Час завершения работ в последний день
input int    Close_HourOrdersInFriday       = 23;// Час завершения работ в пятницу
input int    Have_OrderInHour  =2;// Сколько часов держать открытый ордер
input string Commentation3= "";//Параметры индикатора Correlation:
input float Open_Value=-0.911;// Планка для открытия ордера
input int Depth=50;// Период подсчета
input ENUM_APPLIED_PRICE AppliedPrice=PRICE_WEIGHTED;// Цена
input string Commentation4= "";//Параметры индикатора скользящего среднего:
input int MADepth=200;// Период подсчета

int  oldprofit,iWeek,Monday1,Tuesday2,Wednesday3,Thursday4,Friday5;
int order1, order2, i,Have_OrderHour,Correlation1;
bool start=true, CorrelationF,CorrelationF1,CorrelationF2;
double ticket1, ticket2,closeMoney1[],closeMoney2[],MA1Buffer[],MA2Buffer[],CorrelationBuffer[],OrderProfit1,OrderProfit2,bid,ask,point;
datetime closeorder;
string Money№1_SELLorBUY,Money№2_SELLorBUY,Money№1=Symbol();
//-----OrderSend:
int MyOrderSend(
   string   symbol,               // символ
   int      cmd,                  // торговая операция
   double   volume,               // количество лотов
   double   price,                // цена
   int      slippage,             // проскальзывание
   double   stoploss,             // stop loss
   double   takeprofit,           // take profit
   string   comment=NULL,         // комментарий
   int      magic=0,              // идентификатор
   datetime expiration=0,         // срок истечения ордера
   color    arrow_color=clrNONE  // цвет
               )
  {
  //--- готовим запрос
   MqlTradeRequest request={0};
   request.action=TRADE_ACTION_DEAL;         // установка отложенного ордера
   request.magic=magic;                         // ORDER_MAGIC
   request.symbol=symbol;                       // инструмент
   request.volume=volume;                       // объем в лотах
   request.sl=stoploss;                         // Stop Loss
   request.tp=takeprofit;                       // Take Profit   
   request.type=cmd;                            // тип  ордера
   request.price=price;                         // цена для открытия
   request.deviation=slippage;                  // проскальзывание
   request.comment=comment;                     // комментарий
   request.expiration=expiration;               // срок истечения ордера
//--- отправим торговый приказ
   MqlTradeResult result={0};
   OrderSend(request,result);
   Alert(result.price);
   return(result.price); 
  }
//-----OrderSend

void OnInit()
  {
   bid   =SymbolInfoDouble(Money№1,SYMBOL_BID); // Запрос значения Bid
   ask   =SymbolInfoDouble(Money№1,SYMBOL_ASK); // Запрос значения Ask
   point =SymbolInfoDouble(Money№1,SYMBOL_POINT);//Запрос Point
ticket1=MyOrderSend(Money№1,ORDER_TYPE_BUY,Lot,ask,3,bid-StopLoss*point,ask+TakeProfit*point,"","",0,Blue);
Alert(ticket1);
}

 В результате первый Алерт выдает цену открытия а второй - пишет 1.

Почему второй Алерт не показывает цену открытия?

Ihor Herasko
8418
Ihor Herasko 2014.08.25 17:04  
1987pavlov:

 В результате первый Алерт выдает цену открытия а второй - пишет 1.

Почему второй Алерт не показывает цену открытия?

 Потому что функция MyOrderSend возвращает значение типа int, а цена - это вещественное значение.

Alexander Pavlov
1627
Alexander Pavlov 2014.08.25 17:11  
Scriptong:

 Потому что функция MyOrderSend возвращает значение типа int, а цена - это вещественное значение.

Спасибо.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий