MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1343

 
Forallf :
예를 들어 저에게 중간입니다. 또 다른 계산된 수준이 있을 것입니다.

모든 수준을 설정할 수 있으며 수량에 관계없이

 
Andrey Sokolov :

안녕하세요. 말해 주세요.

기본(첫 번째) 통화가 달러이고 포인트 비용이 일정하지 않고 가격에 따라 달라지는 여러 BUY 포지션이 통화 쌍에 대해 총 이익이 0인 입찰 가격을 계산하는 방법은 무엇입니까?

달러가 인용(두 번째) 통화이고 이러한 함수에서 파생된 상수 핍 값이 있는 쌍의 경우,

이것은 당신을 도울 것입니다)
 
DanilaMactep :
알아차리고 알려주셔서 정말 감사합니다. 이 문제를 수정했는데 2년 동안 130 26 오류가 있었습니다. 동시에 115 거래가 정상적으로 열렸습니다.

보류 중인 주문이 현재 가격에서 STOPLEVEL보다 낮은 거리에 있으면 오류 130이 발생합니다.

그래서 그들은 당신에게 이 코드 를 주었습니다

아니면 고려해야 할 다른 방법이 있습니까?

MarketInfo( _Symbol , MODE_STOPLEVEL);
 
안녕하세요! 개장 후 일정 시간(24시간, 48시간)이 지나면 시장가 주문을 마감하려면 코드가 필요합니다. 시간은 조정 가능해야 합니다.
 
Max330 :
안녕하세요! 개장 후 일정 시간(24시간, 48시간)이 지나면 시장가 주문을 마감하려면 코드가 필요합니다. 시간은 조정 가능해야 합니다.

이 정도

 for ( int pos= OrdersTotal ()- 1 ;pos>= 0 ;pos--)
     if ( OrderSelect (pos,SELECT_BY_POS)== true )
       if(OrderSymbol()==_Symbol)
         if ( TimeCurrent ()-(определенное время в секундах) >= OrderOpenTime()) 
            OrderClose(order_id, 1 ,Ask, 3 ,Red);
 
MakarFX :
이것은 당신을 도울 것입니다)

불행히도 도움이되지 않았습니다. 이것은 일반적으로 시가에 초점을 맞춥니다.

 
Andrey Sokolov :

불행히도 도움이되지 않았습니다. 이것은 일반적으로 시가에 초점을 맞춥니다.

그런 다음 나는 당신이 필요로하는 것을 이해하지 못했습니다.

안드레이 소콜로프 :

여러 BUY 포지션의 총 이익이 0인 입찰가를 계산하는 방법

저것들. 손익분기점?

 
MakarFX :

그런 다음 나는 당신이 필요로하는 것을 이해하지 못했습니다.

저것들. 손익분기점?

총 이익 + 스왑 + 수수료가 == 0이 되는 하나 이상의 단방향 주문(매수 입찰)에 대한 종가를 계산합니다.

이 문제는 기본 통화 가 달러이고 핍 값이 변경되는 쌍에서 발생했습니다.

 
Forallf :
예를 들어 저에게 중간입니다. 또 다른 계산된 수준이 있을 것입니다.

표시기는 임의의 수의 추세선에 대해 중간을 그립니다.

 #property version    "1.00"
#property strict
#property indicator_chart_window

string symbol;
ENUM_TIMEFRAMES frame;
int digits;

long ChartId;
int Window;

datetime time1, time2;
double price;

int OnInit ()
   {
   //идентификатор графика и номер окна индикатора
   ChartId= ChartID ();
   Window= 0 ;
   symbol= Symbol ();
   frame=( ENUM_TIMEFRAMES ) Period ();
   digits=( int ) SymbolInfoInteger (symbol, SYMBOL_DIGITS );
   ChartSetInteger (ChartId, CHART_EVENT_OBJECT_CREATE , true );
   return ( INIT_SUCCEEDED );
   }

int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
   {

   return (rates_total);
   }

void OnChartEvent ( const int id,
                   const long &lparam,
                   const double &dparam,
                   const string &sparam)
   {
   if ((id== CHARTEVENT_OBJECT_CREATE || id== CHARTEVENT_OBJECT_DRAG ) && ObjectGet(sparam, OBJPROP_TYPE )== OBJ_TREND && StringFind (sparam, "Middle" )==- 1 )
      {
      price=(ObjectGet(sparam,OBJPROP_PRICE1)+ObjectGet(sparam,OBJPROP_PRICE2))/ 2 ;
      time1=GetPointTimeOnStraight(( datetime )ObjectGet(sparam,OBJPROP_TIME1),ObjectGet(sparam,OBJPROP_PRICE1),( datetime )ObjectGet(sparam,OBJPROP_TIME2),ObjectGet(sparam,OBJPROP_PRICE2),price,symbol,frame);
      time2=time1+ PeriodSeconds (frame)* 10 ;
      RedrawLine(ChartId,Window,sparam+ "_Middle" ,time1,price,time2,price,( color )ObjectGet(sparam, OBJPROP_COLOR ),( int )ObjectGet(sparam, OBJPROP_WIDTH ),( string )ObjectGet(sparam, OBJPROP_TOOLTIP ),digits);
      }
   }
      
//находит дату точки (координату X) на прямой, на заданную цену (координата Y)
datetime GetPointTimeOnStraight( datetime eTime1, double ePrice1, datetime eTime2, double ePrice2, double ePrice3, string eSymbol, int eTimeFrame)
   {
   if (ePrice2-ePrice1== 0 ) return ( 0.0 );
   //индекс бара соответствующий заданному времени, возможно задавать будующее время
   int eIndex1=(eTime1> iTime (eSymbol,eTimeFrame, 0 ))?( int )(( iTime (eSymbol,eTimeFrame, 0 )-eTime1)/ PeriodSeconds (eTimeFrame)): iBarShift (eSymbol,eTimeFrame,eTime1);
   int eIndex2=(eTime2> iTime (eSymbol,eTimeFrame, 0 ))?( int )(( iTime (eSymbol,eTimeFrame, 0 )-eTime2)/ PeriodSeconds (eTimeFrame)): iBarShift (eSymbol,eTimeFrame,eTime2);
   int eIndex3=eIndex1+( int )((eIndex2-eIndex1)*(ePrice3-ePrice1)/(ePrice2-ePrice1));
   if (eIndex3>= 0 )
      {
       return ( iTime (eSymbol,eTimeFrame,eIndex3));
      }
   else
      {
       return ( iTime (eSymbol,eTimeFrame, 0 )-eIndex3* PeriodSeconds (eTimeFrame));
      }
   }

//перерисовывает линию по новым координатам, если её нет, то создаёт
void RedrawLine( long eChartId, int eWindow, string eName, datetime eTime1, double ePrice1, datetime eTime2, double ePrice2, color eColor, int eWidth, string eTooltip, int eDigits)
   {
   if ( ObjectFind (eChartId,eName)==- 1 )
      {
       if (! ObjectCreate (eChartId,eName, OBJ_TREND ,eWindow, 0 , 0 )) return ;
       ObjectSetInteger (eChartId,eName, OBJPROP_STYLE , STYLE_SOLID );
       ObjectSetInteger (eChartId,eName, OBJPROP_WIDTH ,eWidth);
       ObjectSetInteger (eChartId,eName, OBJPROP_BACK , false );
       ObjectSetInteger (eChartId,eName, OBJPROP_SELECTABLE , false );
       ObjectSetInteger (eChartId,eName, OBJPROP_SELECTED , false );
       ObjectSetInteger (eChartId,eName, OBJPROP_RAY_RIGHT , false );
       ObjectSetInteger (eChartId,eName, OBJPROP_HIDDEN , true );
      }
   if ( ObjectFind (eChartId,eName)==- 1 ) return ;   
   if ( ObjectGetInteger (eChartId,eName, OBJPROP_TIME )!=eTime1) ObjectSetInteger (eChartId,eName, OBJPROP_TIME ,eTime1);
   if ( NormalizeDouble ( ObjectGetDouble (eChartId,eName, OBJPROP_PRICE )-ePrice1,eDigits)!= 0 ) ObjectSetDouble (eChartId,eName, OBJPROP_PRICE ,ePrice1);
   if ( ObjectGetInteger (eChartId,eName, OBJPROP_TIME , 1 )!=eTime2) ObjectSetInteger (eChartId,eName, OBJPROP_TIME , 1 ,eTime2);
   if ( NormalizeDouble ( ObjectGetDouble (eChartId,eName, OBJPROP_PRICE , 1 )-ePrice2,eDigits)!= 0 ) ObjectSetDouble (eChartId,eName, OBJPROP_PRICE , 1 ,ePrice2);
   if ( ObjectGetInteger (eChartId,eName, OBJPROP_COLOR )!=eColor) ObjectSetInteger (eChartId,eName, OBJPROP_COLOR ,eColor);
   if ( ObjectGetString (eChartId,eName, OBJPROP_TOOLTIP )!=eTooltip) ObjectSetString (eChartId,eName, OBJPROP_TOOLTIP ,eTooltip);
   }
 
안녕하세요. 그러한 질문: 브로커 목록에서 Just2Trade만 선택할 수 있습니다. 다른 브로커를 검색할 때 아무 일도 일어나지 않습니다. 재설치를 시도하고 모든 폴더와 파일(숨겨진 파일 포함)을 정리했습니다. 누구든지 그런 문제가 발생했습니까?
파일: