포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 322

 

표시기가 현재가 아니라 마지막 Per 막대의 최대값을 표시하도록 하는 방법을 알려주세요. osma의 예를 사용하여 수행했지만 코드 테스터에 현재가 표시되고 차트가 이동하고 차트에 던지면 아무것도 아닙니다.

 //---- indicator settings
#property   indicator_separate_window
#property   indicator_buffers 1
#property   indicator_color1  Silver
#property   indicator_width1   2
//---- indicator parameters

extern int Per= 12 ;
extern int FastEMA= 12 ;
extern int SlowEMA= 26 ;
extern int SignalSMA= 9 ;
//---- indicator buffers
double      OsmaBuffer1[];
double      OsmaBuffer[];
double      MacdBuffer[];
double      SignalBuffer[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- 2 additional buffers are used for counting.
   IndicatorBuffers( 4 );
//---- drawing settings
   SetIndexStyle( 0 , DRAW_HISTOGRAM );
   SetIndexDrawBegin( 0 ,SignalSMA);
   IndicatorDigits( Digits + 2 );
//---- 3 indicator buffers mapping
   SetIndexBuffer ( 0 ,OsmaBuffer1);
   SetIndexBuffer ( 1 ,OsmaBuffer);
   SetIndexBuffer ( 2 ,MacdBuffer);
   SetIndexBuffer ( 3 ,SignalBuffer);
   
//---- name for DataWindow and indicator subwindow label
   IndicatorShortName( "OsMA(" +FastEMA+ "," +SlowEMA+ "," +SignalSMA+ ")" );
//---- initialization done
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Moving Average of Oscillator                                     |
//+------------------------------------------------------------------+
int start()
  {
   
   int limit;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if (counted_bars> 0 ) counted_bars--;
   limit= Bars -counted_bars;
//---- macd counted in the 1-st additional buffer
   for ( int i= 0 ; i<limit; i++)
      MacdBuffer[i]= iMA ( NULL , 0 ,FastEMA, 0 , MODE_EMA , PRICE_CLOSE ,i)- iMA ( NULL , 0 ,SlowEMA, 0 , MODE_EMA , PRICE_CLOSE ,i);
//---- signal line counted in the 2-nd additional buffer
   for (i= 0 ; i<limit; i++)
      SignalBuffer[i]=iMAOnArray(MacdBuffer, Bars ,SignalSMA, 0 , MODE_SMA ,i);
//---- main loop
   for (i= 0 ; i<limit; i++)
      OsmaBuffer[i]=MacdBuffer[i]-SignalBuffer[i];
//---- done
   for (i= 0 ; i<limit; i++)
    {
     for ( int b= 0 ; b<Per; b++)
      {
       OsmaBuffer1[i] =OsmaBuffer[ ArrayMaximum (OsmaBuffer,Per,b)];
      }
    } 
   return ( 0 );
  }
Всё разобрался, перемудрил просто))), достаточно этого:
 for (i= 0 ; i<limit; i++)
    {
     OsmaBuffer1[i] = OsmaBuffer[ ArrayMaximum (OsmaBuffer,Per,i)];
    } 
 
borilunad :
이해 했어요! 그러나 이 변수("주어진 스프레드")를 프로그래밍하는 방법?! 물론 스프레드 변수를 만들어서 테스터에서 스프레드를 변경할 때마다 변경할 수 있습니다. Spread(TestGenerator) 또는 어떤 종류의 기능이 있거나 어떻게든 그런 기능을 만들 수 있다고 가정해 보겠습니다. 하지만?


테스트 할 때 주어진 스프레드가 있습니다.

그러나 대부분의 DC에서는 가변적입니다. 욕망이 있습니다. 테스터에서 어떻게 든 고려하십시오. 일반적으로 가장 불리한 조건에서 고문을 테스트합니다. 즉, 최대 스프레드, 오픈 주문 등의 지연 가능성이 있습니다.

 
Sepulca :


테스트 할 때 주어진 스프레드가 있습니다.

그러나 대부분의 DC에서는 가변적입니다. 욕망이 있습니다. 테스터에서 어떻게 든 고려하십시오. 일반적으로 가장 불리한 조건에서 고문을 테스트합니다. 즉, 최대 스프레드, 오픈 주문 등의 지연 가능성이 있습니다.

예, 모든 것을 이해하고 수행합니다! Ask는 테스터에서 종종 왜곡되기 때문에 내가 프로그램에서 설정 한 스프레드를 반영하고 싶었습니다. 그런 다음 Bid + 스프레드를 통해 찾으십시오! 테스터에서 MarketInfo가 작동하지 않음 스레드를 참조하십시오. ! 그러면 무슨 일이 일어나고 있는지 이해하게 될 것입니다! 거기에 물었다, 그리고 침묵! 따라서 나는 그것을 여기로 옮겼고 그들은 여기에 응답했습니다. 이에 대해 나와 다른 사람들에게 감사드립니다!
 
동료! 미리 만들어진 기능을 어드바이저에 밀어넣을 수 있도록 도와주세요.
 

다음은 기능입니다.

부울 isFlagHistoryPos(int mn=-1) {

날짜 시간 t;

int gd = MarketInfo(Symbol(),MODE_DIGITS);

정수 i, j=-1, k=OrdersHistoryTotal();

(i=0; i<k; i++) {

if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) {

if (OrderSymbol()==Symbol()) {

if (OrderType()==OP_BUY || OrderType()==OP_SELL) {

if (mn<0 || OrderMagicNumber()==mn) {

if (t<OrderCloseTime()) {

t=주문닫기시간();

j=나;

}

}

}

}

}

}

if(주문선택(j, SELECT_BY_POS,MODE_HISTORY)) {

더블 ocp=NormalizeDouble(OrderClosePrice(),gd);

더블 otp=NormalizeDouble(OrderTakeProfit(),gd);

if(MathAbs(ocp-otp)/Point<=TPpoint) return(true);

}

반환(거짓);

고문 자체가 첨부 파일에 있습니다.

/* Vinin에 의해 디컴파일됨 */

 
borilunad :
예, 모든 것을 이해하고 수행합니다! Ask는 테스터에서 종종 왜곡되기 때문에 내가 프로그램에서 설정 한 스프레드를 반영하고 싶었습니다. 그런 다음 Bid + 스프레드를 통해 찾으십시오! 테스터에서 MarketInfo가 작동하지 않음 스레드를 참조하십시오. ! 그러면 무슨 일이 일어나고 있는지 이해하게 될 것입니다! 거기에 물었다, 그리고 침묵! 따라서 나는 그것을 여기로 옮겼고 그들은 여기에 응답했습니다. 이에 대해 나와 다른 사람들에게 감사드립니다!

젠장, 보리스. 나는 이미 최근에 썼다. 글쎄, 고문에서 부동 스프레드를 모방하십시오. 플로팅 스프레드 범위에서 임의의 숫자를 입찰가에 추가하고 중지로 시작하는 것을 방지하는 것은 무엇입니까? 중지 주문이 아니라 가치에 따라 마감합니다. 더 큰 정적 스프레드를 설정하는 것보다 더 어렵지만 실제로 필요한 경우 묘사할 수 있습니다. 동시에 테스터에서 최소 스프레드를 설정합니다.

그것은 너무... 생각의 라인입니다.

 
artmedia70 :

젠장, 보리스. 나는 이미 최근에 썼다. 글쎄, 고문에서 부동 스프레드를 모방하십시오. 플로팅 스프레드 범위에서 임의의 숫자를 입찰가에 추가하고 중지로 시작하는 것을 방지하는 것은 무엇입니까? 중지 주문이 아니라 가치에 따라 마감합니다. 더 큰 정적 스프레드를 설정하는 것보다 더 어렵지만 실제로 필요한 경우 묘사할 수 있습니다. 동시에 테스터에서 최소 스프레드를 설정합니다.

정말... 생각의 연속입니다.

Artyom 감사합니다! 이것은 좋은 방법으로 더 현명합니다! 나는 그렇게 할게!
 

문제좀 도와주세요) 체커 교차로에서 작동 하는 어드바이저를 작성 했는데 테스트 하려고 하면 터미널에서 삐 소리가 나며 아무것도 테스트 하지 않습니다 (컴파일러는 코드를 좋아합니다. 어떻게 만들 수 있을까요? 적어도 뭔가를 보여?

 #property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link        "http://www.metaquotes.net"


#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- indicator parameters
extern int RPeriod= 13 ;
extern int RPrice= PRICE_CLOSE ;
extern int RMethod= MODE_EMA ;
//для желтой
extern int YPeriod= 30 ;
extern int YPrice= PRICE_CLOSE ;
extern int YMethod= MODE_EMA ;
extern int Magic= 17051994 ;
//профит и лось
extern int TakeProfit= 150 ;
extern int StopLoss= 30 ;
extern double lot= 0.1 ;
double movingred,movingellow,SL,TP,movingred2,movingellow2;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
  
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
int kolpos= 0 ,pos;  
     movingred= iMA ( Symbol (), 0 ,RPeriod, 0 ,RMethod,RPrice, 1 );
     movingellow= iMA ( Symbol (), 0 ,RPeriod, 0 ,RMethod,RPrice, 1 );
     movingred2= iMA ( Symbol (), 0 ,RPeriod, 0 ,RMethod,RPrice, 2 );
     movingellow2= iMA ( Symbol (), 0 ,RPeriod, 0 ,RMethod,RPrice, 2 );
         
         for (pos= 0 ;pos < OrdersTotal ();pos++) //считаю ордера чтобы советник не трогал в ручную выставленные ордера
        {
         OrderSelect (pos,SELECT_BY_POS,MODE_TRADES);
             if (OrderSymbol()== Symbol () && OrderMagicNumber()==Magic )
            {
            kolpos++;
            }
        }
         if (kolpos== 0 )
         {
               //условвие для покупок продаж
               if (movingred2>movingellow2 && movingred<movingellow && Volume[ 0 ]< 5 ) //продаем 
                  {
                     OrderSend ( Symbol (),OP_SELL,lot,Bid, 10 ,Bid+StopLoss* Point ,Bid-TakeProfit* Point , NULL ,Magic, 0 ,Green);
                  }
               if (movingred2<movingellow2 && movingred>movingellow && Volume[ 0 ]< 5 ) //покупаем
                  {
                     OrderSend ( Symbol (),OP_BUY,lot,Ask, 10 ,Ask-StopLoss* Point ,Ask-TakeProfit* Point , NULL ,Magic, 0 ,Red);
                  }
          }
   return ( 0 );
  }
 
LBatters :

문제좀 도와주세요) 체커 교차로에서 작동하는 어드바이저를 작성했는데 테스트 하려고 하면 터미널에서 삐 소리가 나며 아무것도 테스트 하지 않습니다 (컴파일러는 코드를 좋아합니다. 어떻게 만들 수 있을까요? 적어도 뭔가를 보여?

당신이 쓴 것을 본 적이 있습니까?!

"여기 개가 뒤졌다"는 말이 있습니다.

     movingred= iMA ( Symbol (), 0 ,RPeriod, 0 ,RMethod,RPrice, 1 );
     movingellow= iMA ( Symbol (), 0 ,RPeriod, 0 ,RMethod,RPrice, 1 );
     movingred2= iMA ( Symbol (), 0 ,RPeriod, 0 ,RMethod,RPrice, 2 );
     movingellow2= iMA ( Symbol (), 0 ,RPeriod, 0 ,RMethod,RPrice, 2 );
 
LBatters :

문제좀 도와주세요) 체커 교차로에서 작동하는 어드바이저를 작성했는데 테스트 하려고 하면 터미널에서 삐 소리가 나며 아무것도 테스트 하지 않습니다 (컴파일러는 코드를 좋아합니다. 어떻게 만들 수 있을까요? 적어도 뭔가를 보여?

// считаю ордера чтобы советник не трогал в ручную выставленные ордера

그는 어디를 만질까요? 예, 마법이 없는 수동 마법을 확인하는 것으로 충분합니다.


글쎄, 이미 위에서 언급했듯이 자동차는 교차하지 않습니다 ...

사유: