MOEX.初学者的问题 - 页 15

 
prostotrader:

以及我应该怎么做?

 
Вадим Мотеюнас:

我应该怎么做呢?

你是做什么的,用你的手交易?

 
prostotrader:

你在做什么?"换手"?

 
Вадим Мотеюнас:

在交易图上画出这个EA的草图(见文件)。

//+------------------------------------------------------------------+
//|                                                    Pos_price.mq5 |
//|                                      Copyright 2018 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018 prostotrader"
#property link      "https://www.mql5.com"
#property version   "1.00"
//---
double pos_price;
//+------------------------------------------------------------------+
//| Expert Get position price function                               |
//+------------------------------------------------------------------+
double GetPositionPrice(const string aSymbol)
  {
   double price_in=0;
   double volume_in=0;
   if(PositionSelect(aSymbol))
     {
      ulong pos_id=ulong(PositionGetInteger(POSITION_IDENTIFIER));
      if(pos_id>0)
        {
         if(HistorySelectByPosition(pos_id))
           {
            int deals = HistoryDealsTotal();
            for(int i = 0; i < deals; i++)
              {
               ulong deal_ticket=HistoryDealGetTicket(i);
               ulong order_ticket=ulong(HistoryDealGetInteger(deal_ticket,DEAL_ORDER));
               if(order_ticket>0)
                 {
                  ENUM_DEAL_ENTRY deal_entry=ENUM_DEAL_ENTRY(HistoryDealGetInteger(deal_ticket,DEAL_ENTRY));
                  if(deal_entry==DEAL_ENTRY_IN)
                    {
                     double price=HistoryDealGetDouble(deal_ticket,DEAL_PRICE);
                     double volume=HistoryDealGetDouble(deal_ticket,DEAL_VOLUME);
                     price_in+=price*volume;
                     volume_in+=volume;
                    }
                 }
              }
            if(volume_in>0)
              {
               int digits=int(SymbolInfoInteger(aSymbol,SYMBOL_DIGITS));
               return(NormalizeDouble(price_in/volume_in, digits));
              }
           }
         else
           {
            Print(__FUNCTION__,": Невозможно получить историю позиции по символу ",aSymbol);
           }
        }
      else
        {
         Print(__FUNCTION__,": Невозможно определить идентификатор позиции по символу ",aSymbol);
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   pos_price=GetPositionPrice(Symbol());
   ObjectCreate(ChartID(),"Pos_price_1",OBJ_LABEL,0,0,0);
   ObjectSetInteger(ChartID(),"Pos_price_1",OBJPROP_XDISTANCE,5);
   ObjectSetInteger(ChartID(),"Pos_price_1",OBJPROP_YDISTANCE,15);
//---
   ObjectSetInteger(ChartID(),"Pos_price_1",OBJPROP_COLOR,clrWhite);
   ObjectSetString(ChartID(),"Pos_price_1",OBJPROP_TEXT,"Цена позиции: "+DoubleToString(pos_price));
   ChartRedraw(ChartID());
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectDelete(ChartID(),"Pos_price_1_1");
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   pos_price=GetPositionPrice(Symbol());
   ObjectSetString(ChartID(),"Pos_price_1",OBJPROP_TEXT,"Цена позиции: "+DoubleToString(pos_price));
   ChartRedraw(ChartID());
  }
//+------------------------------------------------------------------+

添加

更新了EA(立即显示头寸价格)。

 
prostotrader:

在交易图上画出这个EA(见文件)。

添加

Obnoyil EA(即时显示头寸的价格)

我想我误解了你的意思,或者说我误解了你的意思,我想让MT5中的声明与***的监控相吻合。

 
Вадим Мотеюнас:

你一定是误解了我,或者我一定是误解了你,我想让mt5中的声明与***上的监控相吻合。

我还以为你想要的是职位的真实价格,而不是什么东西与什么东西的契合......。

添加

MT5和*** 都不能正确计算头寸价格,因为MT5中的清算被考虑在内,而***则不知道它算什么

 
prostotrader:

我还以为你想要的是职位的真实价格,而不是什么东西与什么东西的契合......。

添加

我不知道什么正确计算头寸 价格,无论是MT5还是***,因为MT5考虑到清算, 我根本不知道什么能计算出来

我不知道是否有任何好的mt5和forts的免费统计服务?

 
Вадим Мотеюнас:

有什么好的mt5和forts的免费统计服务吗?

有什么理由不喜欢我的免费服务呢?

立即计算出真实的 利润

//+------------------------------------------------------------------+
//|                                                    Pos_price.mq5 |
//|                                      Copyright 2018 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018 prostotrader"
#property link      "https://www.mql5.com"
#property version   "1.00"
//---
double pos_price, profit;
ENUM_POSITION_TYPE pos_type;
//+------------------------------------------------------------------+
//| Expert Get position price function                               |
//+------------------------------------------------------------------+
double GetPositionPrice(const string aSymbol)
  {
   double price_in=0;
   double volume_in=0;
   if(PositionSelect(aSymbol))
     {
      ulong pos_id=ulong(PositionGetInteger(POSITION_IDENTIFIER));
      if(pos_id>0)
        {
         if(HistorySelectByPosition(pos_id))
           {
            int deals = HistoryDealsTotal();
            for(int i = 0; i < deals; i++)
              {
               ulong deal_ticket=HistoryDealGetTicket(i);
               ulong order_ticket=ulong(HistoryDealGetInteger(deal_ticket,DEAL_ORDER));
               if(order_ticket>0)
                 {
                  ENUM_DEAL_ENTRY deal_entry=ENUM_DEAL_ENTRY(HistoryDealGetInteger(deal_ticket,DEAL_ENTRY));
                  if(deal_entry==DEAL_ENTRY_IN)
                    {
                     double price=HistoryDealGetDouble(deal_ticket,DEAL_PRICE);
                     double volume=HistoryDealGetDouble(deal_ticket,DEAL_VOLUME);
                     price_in+=price*volume;
                     volume_in+=volume;
                    }
                 }
              }
            if(volume_in>0)
              {
               int digits=int(SymbolInfoInteger(aSymbol,SYMBOL_DIGITS));
               return(NormalizeDouble(price_in/volume_in, digits));
              }
           }
         else
           {
            Print(__FUNCTION__,": Невозможно получить историю позиции по символу ",aSymbol);
           }
        }
      else
        {
         Print(__FUNCTION__,": Невозможно определить идентификатор позиции по символу ",aSymbol);
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   ObjectCreate(ChartID(),"Pos_price_1",OBJ_LABEL,0,0,0);
   ObjectCreate(ChartID(),"Pos_price_2",OBJ_LABEL,0,0,0);
   ObjectSetInteger(ChartID(),"Pos_price_1",OBJPROP_XDISTANCE,5);
   ObjectSetInteger(ChartID(),"Pos_price_2",OBJPROP_XDISTANCE,5);
   ObjectSetInteger(ChartID(),"Pos_price_1",OBJPROP_YDISTANCE,15);
   ObjectSetInteger(ChartID(),"Pos_price_2",OBJPROP_YDISTANCE,30);
//---
   ObjectSetInteger(ChartID(),"Pos_price_1",OBJPROP_COLOR,clrWhite);
   ObjectSetInteger(ChartID(),"Pos_price_2",OBJPROP_COLOR,clrWhite);
   if(PositionSelect(Symbol()))
   {
     pos_type = ENUM_POSITION_TYPE(PositionGetInteger(POSITION_TYPE));
     pos_price=GetPositionPrice(Symbol());
     switch(pos_type)
     {
       case POSITION_TYPE_SELL:
         profit = pos_price - SymbolInfoDouble(Symbol(), SYMBOL_LAST);
       break;
       case POSITION_TYPE_BUY:
       profit = SymbolInfoDouble(Symbol(), SYMBOL_LAST) - pos_price;
       break;
     }
     ObjectSetString(ChartID(),"Pos_price_1",OBJPROP_TEXT,"Цена позиции: " + DoubleToString(pos_price));
     ObjectSetString(ChartID(),"Pos_price_2",OBJPROP_TEXT,"Текущий профит: " + DoubleToString(profit));
   }
   else
   {
     ObjectSetString(ChartID(),"Pos_price_1",OBJPROP_TEXT,"Цена позиции: 0");
     ObjectSetString(ChartID(),"Pos_price_2",OBJPROP_TEXT,"Текущий профит: 0");
   }  
   ChartRedraw(ChartID());
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectDelete(ChartID(),"Pos_price_1");
   ObjectDelete(ChartID(),"Pos_price_2");
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(PositionSelect(Symbol()))
   {
     pos_type = ENUM_POSITION_TYPE(PositionGetInteger(POSITION_TYPE));
     pos_price=GetPositionPrice(Symbol());
     switch(pos_type)
     {
       case POSITION_TYPE_SELL:
         profit = pos_price - SymbolInfoDouble(Symbol(), SYMBOL_LAST);
       break;
       case POSITION_TYPE_BUY:
       profit = SymbolInfoDouble(Symbol(), SYMBOL_LAST) - pos_price;
       break;
     }
     ObjectSetString(ChartID(),"Pos_price_1",OBJPROP_TEXT,"Цена позиции: " + DoubleToString(pos_price));
     ObjectSetString(ChartID(),"Pos_price_2",OBJPROP_TEXT,"Текущий профит: " + DoubleToString(profit));
   }
   else
   {
     ObjectSetString(ChartID(),"Pos_price_1",OBJPROP_TEXT,"Цена позиции: 0");
     ObjectSetString(ChartID(),"Pos_price_2",OBJPROP_TEXT,"Текущий профит: 0");
   }
   ChartRedraw(ChartID());
  }
//+------------------------------------------------------------------+
 
prostotrader:

我的自由放任有什么不满意的呢?

我需要一种具有自动更新交易历史 的交易日志,来分析我的交易统计,在外汇上***通过mt4工作并正确计算一切(至少mt4的状态与数字***吻合),我与Forts的账户连接的数字是不同的...所以我问,我想也许在mt5需要一些黑客手段

Пользовательский интерфейс - Начало работы - MetaTrader 5
Пользовательский интерфейс - Начало работы - MetaTrader 5
  • www.metatrader5.com
Интерфейс платформы предоставляет доступ ко всем инструментам, необходимым для торговли на финансовых рынках. Он включает в себя различные меню, панели инструментов и служебные окна. Главное меню В главном меню собраны практически все команды и функции, которые можно выполнять в торговой платформе. Оно позволяет работать с графиками...
 
Вадим Мотеюнас:

我需要某种具有自动更新交易历史的交易 日志来分析我的交易统计,在外汇上***m4的工作和计数是正确的(至少mt4的统计与数字***相符),我从Forts连接了一个账户,数字是不同的...所以我想,也许在mt5中你需要一些东西来入侵

"黑客 "没有任何意义,你只需要

我想也许你需要在mt5上黑一些东西。

写下你的职责范围,并在此询问

https://www.mql5.com/ru/job

Торговые приложения для MetaTrader 5 на заказ
Торговые приложения для MetaTrader 5 на заказ
  • www.mql5.com
1. мы задаём период(например неделя вперёд или сутки), которые сразу же разрисовываются полосками временных периодов по нашему желанию от м5 и до W1(с стандартным выбором цветов, толщин линий, пунктиров и т.п.) как в любом индикаторе. Добавление этих полос по выбору- можем хоть 2 , хоть все добавить. И присвоить им цвет, тип , толщину и т.п. А...