MQL5: 검증:-(이미 그것이 무엇인지, 그리고 어떻게 해결되는지에 대한 검색으로 내 두뇌를 곤두박질쳤습니다. - 페이지 4

 
코드를 제거했습니다.
 
Andrey Minaev :
통과해야 할 수표를 읽었습니다. 왜 다 쓰는거야? 볼륨에 대해 질문이 있습니다. 무엇이 잘못되었습니까?

독서와 행동은 엄연히 다른 일입니다.

치료 방법: 읽는 것 외에 쓰여진 대로 하십시오. 실수를 이해할 때까지 반복하십시오.


추가됨: Intersection 2 iMA 선택 전략 코드, OpenBuy, OpenSell, LotCheck 기능을 연구하기 위해.

Intersection 2 iMA Choosing Strategies
Intersection 2 iMA Choosing Strategies
  • www.mql5.com
На баре может быть только одна сделка 'вход в рынок' (это внутренний параметр, он не вынесен во входные параметры и это не имеет отношения к параметру ' Only one positions'). При работе в режиме 'внутри бара' ('Search signals, in seconds' больше или равно '10') текущий бар - бар #0, при работе в режиме 'только в момент рождения нового бара'...
 

내가 당신을 어떻게 이해할 수 있습니까, 나는 제비에 대해 묻고, 당신은 나에게 가격 정상화를 보도록 조언합니다.

나는 많은 시간을 보냈고, 무엇이 잘못되었는지 이해할 수 없습니다. 나는 그들이 쓰는 대로 했다. 그들도 도울 방법을 모른다는 것이 밝혀졌습니다.

어떻게 될 것인가?

 
Andrey Minaev :

내가 당신을 어떻게 이해할 수 있습니까, 나는 제비에 대해 묻고, 당신은 나에게 가격 정상화를 보도록 조언합니다.

나는 많은 시간을 보냈고, 무엇이 잘못되었는지 이해할 수 없습니다. 나는 그들이 쓰는 대로 했다. 그들도 도울 방법을 모른다는 것이 밝혀졌습니다.

어떻게 될 것인가?

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MQL5: 검증:-(이미 그것이 무엇인지, 그리고 어떻게 해결되는지에 대한 검색으로 내 두뇌를 곤두박질쳤습니다.

블라디미르 카르푸토프 , 2020.03.10 18:36

독서와 행동은 엄연히 다른 일입니다.

치료 방법: 읽는 것 외에 쓰여진 대로 하십시오. 실수를 이해할 때까지 반복하십시오.


추가됨: Intersection 2 iMA 선택 전략 코드, OpenBuy, OpenSell, LotCheck 기능을 연구하기 위해.

가격 정상화에 대해 잘못 삽입했습니다. 죄송합니다.
 

귀하의 LotCheck 기능을 삽입했습니다.

여기 결과가 있습니다

 

누구든지 도울 수 있습니까? 나는 이미 모든 것을 시도했습니다.

 
Andrey Minaev :

누구든지 도울 수 있습니까? 나는 이미 모든 것을 시도했습니다.

코드는 어디에 있습니까? 버튼을 사용 하여 코드 붙여넣기 암호

 
//+-----------------------------------------------------------------------------------------------+
//| Функция открывает позицию Sell                                                                |
//+-----------------------------------------------------------------------------------------------+
void OpenSell(void)
{
   double volume=CalculateVolume(ORDER_TYPE_SELL);
   //volume=CheckVolumeValue(volume);
   //volume=NormalizeDouble(volume,DigitsLots());
   volume=LotCheck(volume,symb);
   if(!CheckMoneyForTrade(volume,ORDER_TYPE_BUY))
   {
      sell.allowOpen=false;
      return;
   }
   if(volume==0)
   {
      sell.allowOpen=false;
      return;
   }
   if(trd.Sell(volume,symb.Name(),symb.Bid(),0,0,inpComment))
//+-----------------------------------------------------------------------------------------------+
//| Функция рассчитывает объем позиции                                                            |
//+-----------------------------------------------------------------------------------------------+
double CalculateVolume(ENUM_ORDER_TYPE type)
{
   double volume=0;
   
   double size=cndl.high-cndl.low;
   
   if(symb.Point()==0)
      return 0;
   
   double sl=(size*inpStopLoss*0.01)/symb.Point();
   double risk=AccountInfoDouble(ACCOUNT_BALANCE)*inpRisk*0.01;
   
   volume=(risk/sl)/symb.TickValue();
   
   if(sl==0 || symb.TickValue()==0)
      return 0;
   
   if(inpMaxVolume>0 && inpMaxVolume<volume)
   {
      volume=inpMaxVolume;
      //Print(STR_TIME,"Установлен максимальный объем установленный в настройках");
      //Print(STR_TIME,"The maximum volume set in the settings is set");
   }
   return volume;
}
double LotCheck(double lots,CSymbolInfo &symbol)
  {
//--- calculate maximum volume
   double volume=NormalizeDouble(lots,2);
   double stepvol=symbol.LotsStep();
   if(stepvol>0.0)
      volume=stepvol*MathFloor(volume/stepvol);
//---
   double minvol=symbol.LotsMin();
   if(volume<minvol)
      volume=0.0;
//---
   double maxvol=symbol.LotsMax();
   if(volume>maxvol)
      volume=maxvol;
   return(volume);
  }
 
bool CheckMoneyForTrade(double lots,ENUM_ORDER_TYPE type)
  {
//--- получим цену открытия
   MqlTick mqltick;
   SymbolInfoTick(symb.Name(),mqltick);
   double price=mqltick.ask;
   if(type==ORDER_TYPE_SELL)
      price=mqltick.bid;
//--- значения необходимой и свободной маржи
   double margin,free_margin=AccountInfoDouble(ACCOUNT_MARGIN_FREE);
   //--- вызовем функцию проверки
   if(!OrderCalcMargin(type,symb.Name(),lots,price,margin))
     {
      //--- что-то пошло не так, сообщим и вернем false
      Print("Error in ",__FUNCTION__," code=",GetLastError());
      return(false);
     }
   //--- если не хватает средств на проведение операции
   if(margin>free_margin)
     {
      //--- сообщим об ошибке и вернем false
      Print("Not enough money for ",EnumToString(type)," ",lots," ",symb.Name()," Error code=",GetLastError());
      return(false);
     }
//--- проверка прошла успешно
   return(true);
  }
 
Andrey Minaev :

누구든지 도울 수 있습니까? 나는 이미 모든 것을 시도했습니다.

포지션을 어떻게 마감 합니까?