[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 601

 
BeerGod:

https://www.mql5.com/ru/forum/131859

https://www.mql5.com/ru/forum/131859/page4#434230

isCloseLastPosByTake()函数。

该函数返回一个标志,以获利方式关闭最后一个头寸。Flag is up -True- TakeProfit has triggered.旗帜降低 -虚假- 职位因其他原因被关闭。使用外部参数对要考虑的位置进行更精确的选择。

  • sy- 市场工具的名称。如果你指定这个参数,函数将只考虑指定仪器的位置。默认值"" 意味着任何市场工具。NULL 表示当前的仪器。
  • op- 贸易操作,职位类型。有效值:OP_BUYOP_SELL-1。默认值-1 意味着任何位置。
  • mn- 位置标识符,MagicNumber。默认值-1 表示任何标识符。




谢谢,我自己也看到了KIM的图书馆......(Kim同志显然就像外汇界的MARX一样--写了CAPITAL......我们现在都引用它(即插入我们的EA中))....。在不同的变化中,有近期交易的 "旗帜"...

除了我从来没有使用过# includ-....

你能简明扼要地解释一下吗?

在顶部,我写了#包括(文件名mqh)。

但在代码中,我应该把这个功能放在哪里?

GetTypeLastClosePos()。

然后呢?

这将会给我带来什么类型的职位?

int GetTypeLastClosePos(string sy="", int mn=-1) {
  datetime t;
  int      i, k=OrdersHistoryTotal(), r=-1;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if ((OrderSymbol()==sy || sy=="") && (mn<0 || OrderMagicNumber()==mn)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (t<OrderCloseTime()) {
            t=OrderCloseTime();
            r=OrderType();
          }
        }
      }
    }
  }
  return(r);
}

OrderType() ?

即:如果(OrderType() ==TRUE ) 做这个和那个......。对吗?

 
测试员的功能与在线交易的功能有什么不同?
 
理论上,在与贸易服务器的通信中进行错误处理
 
lottamer:


谢谢,我自己也看到了KIM的图书馆......(KIM同志可能写了外汇世界的大写字母......而我们现在都引用它(即插入我们的专家顾问系统)......)在不同的变化中,有近期交易的 "旗帜"...

除了我从来没有使用过# includ-....

你能简明扼要地解释一下吗?

在顶部我写了# include(文件名mqh)。

但在代码中,我应该把这个功能放在哪里?

GetTypeLastClosePos()。

然后呢?

这将会给我带来什么类型的职位?

OrderType() ?

即:如果(OrderType() ==TRUE ) 做这个和那个......。对吗?

这些函数应该插在return(0)之后。

GetTypeLastClosePos()函数如果有一个买入,将返回0,如果有一个卖出,将返回1,如果历史上没有任何东西,则返回-1。

//+------------------------------------------------------------------+
//|                                                          123.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
if (isCloseLastPosByTake()==true) Comment("Профит"); else Comment("ХЗ");   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия последней позиции по тейку.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
  datetime t;
  double   ocp, otp;
  int      dg, i, j=-1, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
    dg=MarketInfo(sy, MODE_DIGITS);
    if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
    ocp=NormalizeDouble(OrderClosePrice(), dg);
    otp=NormalizeDouble(OrderTakeProfit(), dg);
    if (ocp==otp) return(True);
  }
  return(False);
}
 
BeerGod:

该函数必须插在return(0)之后。

GetTypeLastClosePos()函数在有买入的情况下会返回0,在有卖出的情况下会返回1,如果历史上没有任何东西,则返回1。



明白了,谢谢。

然而,如果该函数是在#include文件中,那么应该如何处理?

 
lottamer:


明白了,谢谢。

然而,如果该函数是在一个#include文件中,那么你如何处置它呢?


你是如何理解#include的

就像在文件中或以你自己的方式?

 

我需要猫头鹰在D1的蜡烛开盘时准确下达挂单。

我写了一个函数。

bool GetTimeToInput()
{
  if(TimeCurrent() == iTime(Symbol(),1440,0)
  {
    return(true);
  }
  else
    return(false);
}

编译员皱起了眉头。

'\end_of_program' - unbalanced left parenthesis E:\Insall'd soft's\Forex\Alpari NZ MT4\experts\Gann_2Days.mq4 (228, 4)

每个人都有托架,这很奇怪。如果这个函数被注释掉,代码编译时就不会出现错误。可能出了什么问题?

我把函数写成只 每日蜡烛的 开盘价 打开,这样做对吗?

 

hoz:

每个人的括号都在那里,这很奇怪。

不,你有正确的狗在if行中丢失。


当然,你很难看到自己眼睛里的木头 :)

而我是否真的写了正确的函数,只在当天蜡烛的 开盘价开盘?

 
lottamer:


开发商与此毫无关系。:__

你应该让它变得简单,而不是 ( Hour()>=10 || Hour()<20 ) Hour()>=10 && Hour()<20

一切顺利


问题不是它起作用了,而是如果帮助写得正确,它不应该起作用。
 
sergeev:

你是如何理解#include的

如同多卡的情况,还是以你自己的方式?


如在多卡。

有一个文件。

EA中提到了这一点。

这足以在EA的任何地方使用,例如,以下列方式使用

如果isCloseLastPosByTake()<0...?