Что я прописал не так? - страница 3

 

Подскажите пожалуйста !

вот так если - код правильно -своё назначение исполняет?

Работает отлично - всё вовремя закрывает.

хотелось бы узнать - правильно ли код прописан

//+------------------------------------------------------------------+
//|                                              CloseLossProfit.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//---
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\PositionInfo.mqh>
//---
CTrade        ExtTrade;    // trading object
CSymbolInfo   Extsymbol;   // symbol info object
CPositionInfo Extposition; // trade position object
//---
input double   InStopLoss           = 25.0;           // Stop Loss
input double   InTakeProfit         = 46.0;           // Take Profit
//---
double n=10;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(PositionSelect(Symbol()))
     {
      CloseAllLoss0(); CloseAllProfit0();
     }
//---   
  }
//+------------------------------------------------------------------+
//| start function                                                   |
//+------------------------------------------------------------------+
void CloseAllProfit0()
  {
//---
   for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of current positions
      if(Extposition.SelectByIndex(i)) // selects the position by index for further access to its properties
        {
         if((PositionGetDouble(POSITION_PROFIT)/PositionGetDouble(POSITION_VOLUME)/
            SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_VALUE))/n>InTakeProfit)
            ClosePosition(Extposition.Symbol()); // close a position by the specified symbo
        }
  }
//+------------------------------------------------------------------+
//| start function                                                   |
//+------------------------------------------------------------------+
void CloseAllLoss0()
  {
//---
   for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of current positions
      if(Extposition.SelectByIndex(i)) // selects the position by index for further access to its properties
        {
         if((PositionGetDouble(POSITION_PROFIT)/PositionGetDouble(POSITION_VOLUME)/
            SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_VALUE))/n<-InStopLoss)
            ClosePosition(Extposition.Symbol());  // close a position by the specified symbo
        }
  }
//+------------------------------------------------------------------+
//| Close selected position                                          |
//+------------------------------------------------------------------+
void ClosePosition(const string symbol)
  {
   if(InitTrade(symbol))
      ExtTrade.PositionClose(Extposition.Ticket()); // close a position by the specified symbo
  }
//+------------------------------------------------------------------+
//| Init trade object                                                |
//+------------------------------------------------------------------+
bool InitTrade(const string symbol)
  {
   if(!Extsymbol.Name(symbol)) // sets symbol name
      return(false);
//---
   if(IsFillingTypeAllowed(symbol,SYMBOL_FILLING_FOK))
      ExtTrade.SetTypeFilling(ORDER_FILLING_FOK);
   else if(IsFillingTypeAllowed(symbol,SYMBOL_FILLING_IOC))
      ExtTrade.SetTypeFilling(ORDER_FILLING_IOC);
   else
      ExtTrade.SetTypeFilling(ORDER_FILLING_RETURN);
//---
   return(true);
//---
  }
//+------------------------------------------------------------------+ 
//| Checks if the specified filling mode is allowed                  | 
//+------------------------------------------------------------------+ 
bool IsFillingTypeAllowed(string symbol,int fill_type)
  {
//--- Obtain the value of the property that describes allowed filling modes 
   int filling=(int)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
//--- Return true, if mode fill_type is allowed 
   return((filling & fill_type)==fill_type);
  }
//+------------------------------------------------------------------+
Файлы:
 

Помогите разобраться !

как мне в этом коде, изменить в эксперте - что бы эти выставленные Горизонтальные линии удалялись с графика - когда я их удаляю, они возвращаются назад на график

а мне нужно, что бы я их удалил и они не появлялись вновь

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void VMCal()
  {
   vmcal=1;
   double PointVal=0,midPRC=0,priceOpen=0,priceTP=0,priceSL=0,
          mibRate=0,msbRate=0,misRate=0,mssRate=0,mRate=0;
   int TPsize=0,SLsize=0,chHP=0,window=0;
   datetime chcdt=0;

   PointVal=SymbolInfoDouble(_Symbol,SYMBOL_POINT);
   chHP=(int)ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0);
   midPRC=(SymbolInfoDouble(_Symbol,SYMBOL_BIDLOW)+SymbolInfoDouble(_Symbol,SYMBOL_ASKHIGH))*0.5;
   ChartXYToTimePrice(0,0,int(chHP*0.5),window,chcdt,priceOpen);
   if(priceOpen<midPRC)
     {
      ChartXYToTimePrice(0,0,int(chHP*0.65),window,chcdt,priceTP);
      ChartXYToTimePrice(0,0,int(chHP*0.35),window,chcdt,priceSL);
     }
   else
     {
      ChartXYToTimePrice(0,0,int(chHP*0.35),window,chcdt,priceTP);
      ChartXYToTimePrice(0,0,int(chHP*0.65),window,chcdt,priceSL);
     }
   SymbolInfoMarginRate(_Symbol,ORDER_TYPE_BUY,mibRate,msbRate);
   SymbolInfoMarginRate(_Symbol,ORDER_TYPE_SELL,misRate,mssRate);
   mRate=(mibRate+msbRate+misRate+mssRate)/4;
   if(ObjectFind(0,"TakeProfit")<0)
     {
      Obj_HLine(0,0,"TakeProfit",priceTP,VMCclrTP,0,0,1,1,1,1,2);
     }
   if(ObjectFind(0,"PriceOpen")<0)
     {
      Obj_HLine(0,0,"PriceOpen",priceOpen,VMCclrOP,0,0,1,1,1,1,2);
     }
   if(ObjectFind(0,"StopLoss")<0)
     {
      Obj_HLine(0,0,"StopLoss",priceSL,VMCclrSL,0,0,1,1,1,1,2);
     }
   TPsize=int(MathAbs(ObjectGetDouble(0,"PriceOpen",OBJPROP_PRICE)-
                      ObjectGetDouble(0,"TakeProfit",OBJPROP_PRICE))/PointVal);
   SLsize=int(MathAbs(ObjectGetDouble(0,"PriceOpen",OBJPROP_PRICE)-
                      ObjectGetDouble(0,"StopLoss",OBJPROP_PRICE))/PointVal);

   ChartRedraw();
  }
//+------------------------------------------------------------------+


 

 

как убрать это предупреждение ?

пробовал и переименовывать ( lastme ) - не помогло

possible use of uninitialized variable 'lastme' _finder.mq5 3386 24

предуприждение

 
Aleksandr Klapatyuk:

как убрать это предупреждение ?

пробовал и переименовывать ( lastme ) - не помогло

possible use of uninitialized variable 'lastme' _finder.mq5 3386 24


убрал предупреждение ! не знаю, правильно или нет- но меня устраивает - главное что, всё что нужно, для моих целей работает, и нет, не каких предупреждений    

  предуприждение2

Файлы:
_finder.mq5  282 kb
 
Aleksandr Klapatyuk:

Да! не информации в документации - не человеческого ответа! 

Есть:

Магическое число ордера. Может использоваться как определяемый пользователем идентификатор.

 
Alekseu Fedotov:

Есть:

Магическое число ордера. Может использоваться как определяемый пользователем идентификатор.

Спасибо! 

 
Спасибо!