찻주전자의 질문 - 페이지 239

 
forward666 :

감사합니다! 제안할 수 있는 것이 있으면 최고입니다!

이제 스타일리스트 에 대해 자세히 읽어보겠습니다.

대신 시도:

 bool first;

쓰다:

 bool first= true ;
 
신사 숙녀 여러분! "찻주전자"에게 시장에서 무료 고문을 다운로드하는 방법(또는 오히려 어디에서)을 알려주십시오. 일반 어드바이저를 설치할 위치를 알고 있습니다. .. 시장에서 작동하지 않습니다. 어떤 응용 프로그램을 사용해야합니까?
 
Sokrat :

신사 숙녀 여러분! "찻주전자"에게 시장에서 무료 고문을 다운로드하는 방법(또는 오히려 어디에서)을 알려주십시오. 일반 어드바이저를 설치할 위치를 알고 있습니다. .. 시장에서 작동하지 않습니다. 어떤 응용 프로그램을 사용해야합니까?
이 작업을 수행하는 가장 쉬운 방법은 터미널에서, 도구 모음에 시장 탭이 있습니다.
 
Sokrat :

신사 숙녀 여러분! "찻주전자"에게 시장에서 무료 고문을 다운로드하는 방법(또는 오히려 어디에서)을 알려주십시오. 일반 어드바이저를 설치할 위치를 알고 있습니다. .. 시장에서 작동하지 않습니다. 어떤 응용 프로그램을 사용해야합니까?



 

forward666 : У меня при запуске робота сразу открывается позиция ,которая явно не отражает реалии графика,соответственно она уходит в глубокий минус. Как сделать,что при запуске робота эта позиция не открывалась сразу?где в коде нужно что-то добавить?

 #include <Trade/Trade.mqh>
#include <Trade/SymbolInfo.mqh>
#include <Trade/PositionInfo.mqh>

CTrade Trade;
CSymbolInfo Sym;
CPositionInfo Pos;

input int Shift= 10 ; /*Shift*/ // Величина скачка цены для открытия позиции
input int Limit= 100 ; /*Limit*/ // Величина убытка в пунктах для закрытия позиции
input int Prof= 10 ;
input int MA_Period= 50 ; // Период Moving Average 
int maHandle; // хэндл индикатора Moving Average
double maVal[ 3 ]; // статический массив для хранения значений индикатора Moving Average
bool first;
double a,b,Lots;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
  {
   maHandle= iMA ( NULL , 0 ,MA_Period, 2 , MODE_SMA , PRICE_CLOSE );
   if (maHandle< 0 )
     {
       Alert ( "Ошибка при создании индикаторов - номер ошибки: " , GetLastError (), "!!" );
       return (- 1 );
     }
   first= false ;
   if (!Sym.Name( _Symbol ))
     {
       Alert ( "Ошибка инициализации CSymbolInfo, поворите попытку" );
       return (- 1 );
     }
   Print ( "Инициализация эксперта выполнена" );
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
   IndicatorRelease (maHandle);
  }
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
  {
   if ( CopyBuffer (maHandle, 0 , 0 , 3 ,maVal)< 0 )
     {
       Alert ( "Ошибка копирования буферов индикаторов - номер ошибки:" , GetLastError ());
       return ;
     }
   if (!Sym.RefreshRates()) return ;
   if (first)
     {
      a=Sym.Ask();
      b=Sym.Bid();
      first= false ;
       return ;
     }
   Lots= AccountInfoDouble ( ACCOUNT_FREEMARGIN )* 0.66 / 1000 / SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_TICK_VALUE );
   Lots= MathMin ( 999 , MathMax ( 1 ,Lots));
   Lots= NormalizeDouble (Lots, 2 );
   if (Pos.Select( _Symbol ))
     {
       if (Pos.Profit()> 2 )
        {
         Trade.PositionClose( _Symbol ,Sym.Spread()* 2 );
        }
       else
        {
         if (Pos.PositionType()== POSITION_TYPE_BUY )
           {
             if ((Pos.PriceOpen()-Sym.Ask())/Sym. Point ()>Limit) // || Sym.Bid()<maVal[0]-0.0005)
              {
               Trade.PositionClose( _Symbol ,Sym.Spread()* 2 );

              }
           }
         else if (Pos.PositionType()== POSITION_TYPE_SELL )
           {
             if ((Sym.Bid()-Pos.PriceOpen())/Sym. Point ()>Limit) // || Sym.Ask()>maVal[0]+0.0005)
              {
               Trade.PositionClose( _Symbol ,Sym.Spread()* 2 );

              }
           }
        }
     }
   else
     {
       if (b-Sym.Bid()>=Shift*Sym. Point () && maVal[ 0 ]>maVal[ 1 ] && maVal[ 1 ]>maVal[ 2 ] && Sym.Bid()<maVal[ 0 ])
        {
         Trade.SetDeviationInPoints(Sym.Spread()* 2 );
         Trade.PositionOpen( _Symbol , ORDER_TYPE_SELL ,Lots,Sym.Bid(), 0 , 0 , "" ); //Sym.Bid()+0.0030
                                                                             // Trade.Sell(Lots,_Symbol,0,0,0,"");
         Print ( __FUNCTION__ , "():Sell" );
        }
       if (Sym.Ask()-a>=Shift*Sym. Point () && maVal[ 0 ]<maVal[ 1 ] && maVal[ 1 ]<maVal[ 2 ] && Sym.Ask()>maVal[ 0 ])
        {
         Trade.SetDeviationInPoints(Sym.Spread()* 2 );
         Trade.PositionOpen( _Symbol , ORDER_TYPE_BUY ,Lots,Sym.Ask(), 0 , 0 , "" ); //Sym.Ask()-0.0030
                                                                           // Trade.Buy(Lots,_Symbol,0,0,0,"");
         Print ( __FUNCTION__ , "():Buy" );
        }
     }
   a=Sym.Ask();
   b=Sym.Bid();
  }

첫 번째 틱 전에 first==false가 있고 변수 a와 b는 초기화되지 않습니다. 따라서 첫 번째 틱에서 조건

   if (first)
     {
      a=Sym.Ask();
      b=Sym.Bid();
      first= false ;
      return ;
     }

실패하고 변수와 b는 초기화되지 않은 상태로 유지됩니다.

이 문제를 수정한 후에도 위치가 계속 열리면 MA, ask,bid 및 변수 a 및 b에 대한 배열 값을 인쇄하십시오.

 

안녕하세요.

내가 제일 '찻주전자'니까 발로 차지마)

질문은 다음과 같습니다. 5번째 메타트레이더에서 견적 데이터를 추출하는 방법은 무엇입니까?

4m에서는 모든 것이 명확하고 쉽습니다. 인용문을 Excel 파일로 변환하여 인터넷 액세스가 차단된 직장에 가져 가서 그곳에서 작업했습니다.

그런데 5차 메타트레이더에서는 파일을 엑셀로 변환하는 방법을 모르겠습니다. 말해 주세요. 원하는 시간대에 사용할 수 있는 단계별 지침이나 스크립트 (프로그래밍 언어를 전혀 모르지만 스크립트, 조언자 또는 표시기 사용 방법은 알고 있음)가 필요합니다. 비표준(예: M3 또는 M7)인 경우에도 마찬가지입니다. 그리고 저에게 프로그래밍 언어를 배우도록 요구하지 마십시오.

두 명의 메타 트레이더와 함께 일하지 않기 위해 마침내 MT5로 전환하고 싶습니다.

지식이 풍부한 사람들의 도움을 진심으로 바랍니다. 인생의 관에 감사드립니다 =).

진심으로, 알렉스.

 
Hronoptal :

...

부분적으로 여기에서 필요한 것을 찾을 수 있습니다: 다른 프로그램을 위해 MetaTrader 5 견적을 준비하는 방법

공부를 하기 싫으시다면 작업 섹션에서 마음에 드시는 대로 주문하시면 됩니다. ))

 

힌트를 주신 tol64님, 감사합니다.

그리고 공부를 하는 대가로, 불행히도 여전히 시간이 부족한 문제입니다.

다시 한번 감사합니다.

진심으로, 알렉스.

 
1개가 아닌 2개 이상의 지표가 표시되도록 지표의 시각적 테스트를 수행할 수 있습니까?
 
paladin800 :
1개가 아닌 2개 이상의 지표가 표시되도록 지표의 시각적 테스트를 수행할 수 있습니까?
필요한 모든 표시기와 함께 파일 이름 tester.tpl 로 템플릿을 저장하고 시각화 모드에서 테스트를 활성화합니다.