新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1953

 

下午好

面对不了解如何"。标准库中 的 "Search()"。

我正在使用标准的类--CiTime() -- 该类是一个访问条形开盘时间序列的类。

int OnInit()
  {
//..
 TimeFrac=new CiTime();
   if(CheckPointer(TimeFrac)==POINTER_INVALID || !TimeFrac.Create(symbol_Name,TimeFr_Frac_D1))
      return INIT_FAILED;
   TimeFrac.Refresh();  
   TimeFrac.Sort();
//..

当试图找到我需要的日期时(类是相同的,但周期是不同的)。

 int k = TimeFrac.Search(  Time.GetData(i)    );

犯了一个错误。

'GetData' -参数转换不允许

试图取代

Time.GetData(i)

datetime Time_GetData  =  Time.GetData(i);

不起作用...

我已经参考了《帮助》。它说有

int  Search( 
   CObject*  element      // образец 
   ) const

还有一个疯狂的应用例子。

事实证明,通过同一类别中的已知 "日期 "来搜索一个标准类别中的 "日期 "是不可能的!?

只有一个类元素。

CObject

我找不到一个关于如何在这个类中搜索一个Date的工作例子。

我应该联系谁来寻求帮助?

谢谢你。

 
大家好,请告诉我出了什么问题,不知道为什么,它不工作了
double Minus_profit(){
time=TimeCurrent();
 for (int i=0; i<OrdersHistoryTotal(); i++){
      if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){
       if (OrderSymbol() == Symbol() && OrderMagicNumber()==Magic){
        if (OrderType() == OP_BUY || OrderType() ==OP_SELL){
         if (OrderCloseTime()>=time){
          if (OrderProfit()+OrderSwap()+OrderCommission()<=0){
              time=OrderCloseTime();
              profit+=OrderProfit();swap+=OrderSwap(); ;comis+=OrderCommission();
              result=profit+swap+comis;   
   }}}}}}return(result);
}
 
Alexander Avksentyev #:
大家好,请告诉我出了什么问题,不知道为什么,它不工作了
double Minus_profit(){
time=TimeCurrent();   // это текущее время
 for (int i=0; i<OrdersHistoryTotal(); i++){
      if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){
       if (OrderSymbol() == Symbol() && OrderMagicNumber()==Magic){
        if (OrderType() == OP_BUY || OrderType() ==OP_SELL){
         if (OrderCloseTime()>=time){                  // условие не выполнимо, что бы время закрытия ордера в истории
          if (OrderProfit()+OrderSwap()+OrderCommission()<=0){     // было больше/позже чем текущее
              time=OrderCloseTime();
              profit+=OrderProfit();swap+=OrderSwap(); ;comis+=OrderCommission();
              result=profit+swap+comis;   
   }}}}}}return(result);
}
 

问题。对于4K来说。

doubleMarketInfo(

)

MODE_LOTSIZE

15

以工具的基础货币为单位的合同规模

我没有理解错吧,这是1(1)手的价值,除以杠杆,该手的价值包括工具的第一货币的杠杆。

mode_marginrequired

32

打开1手买入所需的自由资金数额

是否有类似于5中的最后一个,如果有的话,我还没有找到。

MarginFree基金是明确的。如果我们用它们除以一手的价值,就可以得到我们在没有杠杆的情况下可以开多少手,再乘以杠杆,就可以得到有杠杆的多少。这是否正确呢?

Zy。这对一个5岁的孩子来说是否正确?

double   Free   =AccountInfoDouble(ACCOUNT_MARGIN_FREE);                 // Свободн средства
double   One_Lot=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_CONTRACT_SIZE);// Стоимость 1 лота без плеча
double   Step   =SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);       // Шаг изменен размера
long     Laverage=AccountInfoInteger(ACCOUNT_LEVERAGE); // Плечо
double   One_Lot_Lav=ND((One_Lot/Laverage)*Ask);      // Стоимость лота с плечом для бай
Lts=MathFloor(Free*Prots/One_Lot_Lav/Step)*Step;// Для открытия
 

求帮忙写个简单EA,万分感谢



不用设止损,



自己设定手数

开盘价-最低价>=1.5并且收盘价-开盘价<=1.5,(类似于竖的锤子结构,)下一根K线开多单

最高价-开盘价>=1.5并且开盘价-收盘价<=1.5(类似于倒锤子结构)下一根K线开空单

每走完一根K线就平掉所有仓位
原因: