[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 232

 

Dmido писал(а) >>

안녕하세요)


다시 한 번 질문을 드리지만, 어드바이저가 늦어진 것에 대한 오해로 오랫동안 피했지만 여전합니다. 보류 중인 주문에서 가격이 어떻게 설정되어 있는지 알 수 없습니까? BID와 ASK 대신 무엇을 삽입할 것인가? 이전에 계산된 모든 변수가 가능합니까? 그런 다음 주문할 때 이 가격이 통과하도록 점수를 매기는 방법은 무엇입니까? 그런 다음 그런 가격이 없다고 말하는 오류의 바다가 있습니다 ....


어렵지 않다면 코드로 답을 설명하시면 되구요... 그렇지 않으면 검색에 삽질을 너무 많이 해서 여기저기서 이 주제 옆에 써져있네요... ((

아이디어에 따르면 Ask와 Bid의 값은 Ask와 Bid 자체의 현재 값이거나 변수가 더 일찍 계산되어야 합니다.

여기에는 한 가지 기능이 있습니다. 이 값은 매수 및 매도 주문에 대해서만 실제처럼 받아들일 수 있습니다.


모든 주문의 개시를 최소한 6가지 절차, 즉 OrderSendBuy, OrderSendSell, OrderSendLimitBuy, OrderSendLimitSell, OrderSendStopBuy 및 OrderSendStopSell의 형태로 준비하는 것이 가장 좋습니다.


추신

지정가 주문은 가장 좋은 가격(현재 가격에서 특정 포인트만큼 들여쓰기)으로 열리고 스탑 주문은 현재 가격 위 또는 아래 반대 방향으로 배치됩니다.


시장의 오프닝 코드의 예:

 //Procedure OrderSendBuy
void OrderSendBuy ( string WorkSymbol , double LotsSize = 0 , int Slippage = 3 , int SizeSL = 0 , int SizeTP = 100 ,
string Text = NULL , int MN = 0 , datetime Expiration = 0 , color OrdrtColor = CLR_NONE )
{
//----------------------------------------------------------------------------//
// Служебные переменные
double RealAsk , RealBid ; //Текущие Ask и Bid инструмента
double SymbolPoint ; //Размер пункта текущего инструмента
double SL , TP ; // StopLoss и TakeProfit будущей позиции

int TicketNew ; //Тикер новой позиции (в случае удачи, иначе -1)
//----------------------------------------------------------------------------//
//Зашита от дурака
   if ( LotsSize < MarketInfo ( WorkSymbol , MODE_MINLOT ) ) { LotsSize = MarketInfo ( WorkSymbol , MODE_MINLOT ) ; }

//Расчет параметров для новой позиции
SymbolPoint = MarketInfo ( WorkSymbol , MODE_POINT ) ; //Определяем размер пункта
RealAsk = MarketInfo ( WorkSymbol , MODE_ASK ) ; //Определяем Ask
RealBid = MarketInfo ( WorkSymbol , MODE_BID ) ; //Определяем Bid

if ( SizeTP > 0 ) { TP = RealAsk + SizeTP * SymbolPoint ; } else { TP = RealAsk + 100 * SymbolPoint ; }
if ( SizeSL > 0 ) { SL = RealBid - SizeSL * SymbolPoint ; } else { SL = 0 ; }
//Попытка открыть позицию с рынка
TicketNew = OrderSend ( WorkSymbol , OP_BUY , LotsSize , RealAsk , Slippage , SL , TP , Text , MN , Expiration , OrdrtColor ) ;
//Проверка ошибок возникших при открытии новой позиции
if ( TicketNew = = - 1 )
//При открытии произошла ошибка
{
Print ( "Попытка открыть Market-Buy позицию по паре " , WorkSymbol , " окончилась неудачно. Код ошибки #" , GetLastError ( ) )
; }
else
//Позиция успешно установлена
{
Print ( "Успешно создана позиция Market-Buy по паре " , WorkSymbol , " Тикер новой позиции #" , TicketNow ) ;
Alert ( "Open market-Buy, ticket " , TicketNew , " Open price " , RealAsk , " Profit " , TP , " SL " , SL ) ;
}
//----------------------------------------------------------------------------//
}


 

보류 주문을 설정하기 위한 예제 코드:

 //Procedure OrderSendLimitBuy
void OrderSendLimitBuy ( string WorkSymbol , double LotsSize = 0 , int Slippage = 3 , int LimitStep = 50 , int SizeSL = 0 , int SizeTP = 100 ,
string Text = NULL , int MN = 0 , datetime Expiration = 0 , color OrdrtColor = CLR_NONE )
{
//----------------------------------------------------------------------------//
// Служебные переменные
double RealAsk , RealBid ; //Текущие Ask и Bid инструмента
double OpenPrice ; //Цена на которую будет установлен отложник

double SymbolPoint ; //Размер пункта текущего инструмента
double SL , TP ; // StopLoss и TakeProfit будущей позиции

int TicketNew ; //Тикер новой позиции (в случае удачи, иначе -1)
//----------------------------------------------------------------------------//
//Зашита от дурака
   if ( LotsSize < MarketInfo ( WorkSymbol , MODE_MINLOT ) ) { LotsSize = MarketInfo ( WorkSymbol , MODE_MINLOT ) ; }

//Расчет параметров для новой позиции
SymbolPoint = MarketInfo ( WorkSymbol , MODE_POINT ) ; //Определяем размер пункта
RealAsk = MarketInfo ( WorkSymbol , MODE_ASK ) ; //Определяем Ask
RealBid = MarketInfo ( WorkSymbol , MODE_BID ) ; //Определяем Bid

OpenPrice = RealAsk - LimitStep * SymbolPoint ; //Цена на которую будет установлен отложник

if ( SizeTP > 0 ) { TP = OpenPrice + SizeTP * SymbolPoint ; } else { TP = OpenPrice + 100 * SymbolPoint ; }
if ( SizeSL > 0 ) { SL = RealBid - ( SizeSL + LimitStep ) * SymbolPoint ; } else { SL = 0 ; }
//Попытка открыть позицию с рынка
TicketNew = OrderSend ( WorkSymbol , OP_BUYLIMIT , LotsSize , OpenPrice , Slippage , SL , TP , Text , MN , Expiration , OrdrtColor ) ;
//Проверка ошибок возникших при открытии новой позиции
if ( TicketNew = = - 1 )
//При открытии произошла ошибка
{
Print ( "Попытка создать Limit-Buy по паре " , WorkSymbol , " окончилась неудачно. Код ошибки #" , GetLastError ( ) )
; }
else
//Позиция успешно установлена
{
Print ( "Успешно создан ордер Limit-Buy по паре " , WorkSymbol , " Тикер ордера #" , TicketNow ) ;
Alert ( "Create Limit- Buy, ticket " , TicketNew , " Open price " , OpenPrice , " Profit " , TP , " SL " , SL ) ;
}
//----------------------------------------------------------------------------//
}
 

안녕하세요.

고문을 테스트 중입니다.

기간 요일(D1) 2008.09.01 00:00 - 2009.08.31 00:00 (2008.09.01 - 2009.09.01)
모델 모든 틱(가용 가능한 모든 시간 프레임을 기반으로 한 가장 정확한 방법)
역사의 바 1259 시뮬레이션된 진드기 8769661 시뮬레이션 품질 해당 없음
그래프 불일치 오류 225

그리고 불일치 오류가 발생합니다. 어떻게 든 그들을 피할 수 있습니까? 이것이 많은 수의 오류인지, 적은 수의 오류인지 이해가 되지 않습니다. 저울은 주로 녹색과 짙은 녹색을 생산하지만 약 20%만 차 있습니다. 그리고 시뮬레이션 n/a의 품질이 문제입니까?

관심조차 두지 말아야 할지도 몰라요...

미리 감사드립니다.

 
RedFish >> :

안녕하세요.

고문을 테스트 중입니다.

기간 요일(D1) 2008.09.01 00:00 - 2009.08.31 00:00 (2008.09.01 - 2009.09.01)
모델 모든 틱(가용 가능한 모든 시간 프레임을 기반으로 한 가장 정확한 방법)
역사의 바 1259 시뮬레이션된 진드기 8769661 시뮬레이션 품질 해당 없음
그래프 불일치 오류 225

그리고 불일치 오류가 발생합니다. 어떻게 든 그들을 피할 수 있습니까? 이것이 많은 수의 오류인지, 적은 수의 오류인지 이해가 되지 않습니다. 저울은 주로 녹색과 짙은 녹색을 생산하지만 약 20%만 차 있습니다. 그리고 시뮬레이션 n/a의 품질이 문제입니까?

관심조차 두지 말아야 할지도 몰라요...

미리 감사드립니다.

저는 개인적으로 그런 일에 전혀 신경 쓰지 않습니다(거의 항상 시각화 없이 전략을 테스트하기 때문입니다).


다음은 유사한 테스트 기간으로 유태인 D1에서 발생한 일입니다.

시도 #1: 기록의 막대 - 1302 틱 시뮬레이션 - 4313293 시뮬레이션 품질 - 50.00%

시도 #2: 기록의 막대 - 1303 틱 시뮬레이션 - 4323442 모델링 품질 - 50.00%
그래프 불일치 오류 - 0.

 
Interesting писал(а) >>

저는 개인적으로 그런 일에 전혀 신경 쓰지 않습니다(거의 항상 시각화 없이 전략을 테스트하기 때문입니다).

다음은 유사한 테스트 기간으로 D1에서 발생한 일입니다.

시도 #1: 기록의 막대 - 1302 틱 시뮬레이션 - 4313293 시뮬레이션 품질 - 50.00 %

시도 #2: 기록의 막대 - 1303 틱 시뮬레이션 - 4323442 시뮬레이션 품질 - 50.00 %
그래프 불일치 오류 - 0 .

고맙습니다.

나는 이제 자동 장치의 MT가 마지막 512개의 막대를 구동하고 나머지를 채우는 것으로 생각합니다. 그런 식으로(더 정확하게 표현하는 방법을 모르겠습니다). 나는 트렌드 엑스퍼트 어드바이저가 있고 거리가 중요하지만 512바는 충분하지 않습니다.

인용문 내역을 어딘가에 다운로드하여 나중에 운전할 수 있습니까?

덕분에.

 

좋은 오후입니다.

최근에 어리석은 일, 아마도 날씨가 영향을 미칠 것입니다.

배열 요소의 개수가 외부 변수로 설정되어 있는 경우 1차원 배열(indicator)을 선언하는 방법을 알려주세요.

고맙습니다.

 
RedFish >> :

안녕하세요.

고문을 테스트 중입니다.

기간 요일(D1) 2008.09.01 00:00 - 2009.08.31 00:00 (2008.09.01 - 2009.09.01)
모델 모든 틱(가용 가능한 모든 시간 프레임을 기반으로 한 가장 정확한 방법)
역사의 바 1259 시뮬레이션된 진드기 8769661 시뮬레이션 품질 해당 없음
그래프 불일치 오류 225

그리고 불일치 오류가 발생합니다. 어떻게 든 그들을 피할 수 있습니까? 이것이 많은 수의 오류인지, 적은 수의 오류인지 이해가 되지 않습니다. 저울은 주로 녹색과 짙은 녹색을 생산하지만 약 20%만 차 있습니다. 그리고 시뮬레이션 n/a의 품질이 문제입니까?

관심조차 두지 말아야 할지도 몰라요...

미리 감사드립니다.

내 아래 IMHO이지만 따옴표이므로 내가 틀렸다면 수정하십시오.

사실은 59분에 Close, M15에 45개, M30에 30개, H1에 Close가 대처할 수 없다는 것입니다.

일치하려면 더 짧은 기간 동안 견적 서버에서 기록을 다운로드하여 자신의 기록을 종료해야 합니다.

및 다운로드된 이력에 따라 모든 시간 프레임을 재계산하는 단계를 포함합니다.

동시에 실제 생활에서 다른 시간대의 닫기도 일치하지 않을 수 있습니다.

저것들. 좋은 방법으로 더 작은 시간 프레임을 사용하고 더 큰 시간 프레임의 값을 HANDS로 계산해야 합니다.

 
alderru >> :

좋은 오후입니다.

최근에 어리석은 일, 아마도 날씨가 영향을 미칠 것입니다.

배열 요소의 개수가 외부 변수로 설정되어 있는 경우 1차원 배열(indicator)을 선언하는 방법을 알려주세요.

고맙습니다.

정수 y[];

extern int blah-blah = 100;

초기화() {

ArrayResize(y, blah-blah);

}

 
jartmailru писал(а) >>

내 아래 IMHO이지만 따옴표이므로 내가 틀렸다면 수정하십시오.

사실은 59분에 Close, M15에 45개, M30에 30개, H1에 Close가 대처할 수 없다는 것입니다.

일치하려면 더 짧은 기간 동안 견적 서버에서 기록을 다운로드하여 자신의 기록을 종료해야 합니다.

및 다운로드된 이력에 따라 모든 시간 프레임을 재계산하는 단계를 포함합니다.

동시에 실제 생활에서 다른 시간대의 닫기도 일치하지 않을 수 있습니다.

저것들. 좋은 방법으로 더 작은 시간 프레임을 사용하고 더 큰 시간 프레임의 값을 HANDS로 계산해야 합니다.

영형! 소유!!!

답변 해주셔서 감사합니다. 그러나 첫 번째 부분으로 판단하면 실수가 나에게 중요하지 않다는 것을 깨달았습니다. 이와 별도로 이러한 오류가 나타나는 메커니즘을 설명해주셔서 감사합니다.

 
코드의 문제가 도움이 될 수 있습니다!
 for ( shift = CountBars ; shift > = 0 ; shift - - ) 
{ 
         cci1 = iCCI ( NULL , 0 , kCCI , PRICE_TYPICAL , shift - 1 ) ;
         cci2 = iCCI ( NULL , 0 , kCCI , PRICE_TYPICAL , shift ) ;   

         if ( cci1 > 100 ) // (b4plusdi>b4minusdi && nowplusdi<nowminusdi)
         {
         val1 [ shift ] = Low [ shift ] - 5 * Point ;
         if ( flagval2 = = 0 ) { Alert ( "не забудь отправить письмо о БАЙ" ) ; flagval2 = 1 ; flagval1 = 0 ; }
         }
         if ( cci1 < - 100 ) //(b4plusdi<b4minusdi && nowplusdi>nowminusdi) 
         {
         val2 [ shift ] = High [ shift ] + 5 * Point ;
         if ( flagval1 = = 0 ) { Alert ( "не забудь отправить письмо о СЕЛЛ" ) ; flagval2 = 0 ; flagval1 = 1 ; }
         }
   }
   return ( 0 ) ;
}

상단에는 다음이 있습니다.

int flagval1=0;
int flagval2=0;

특히 이 깃발로 누가 신선한 마음을 바라볼 수 있을까?

------------------

그리고 어드바이저 코드의 또 다른 문제:

 //---------------------------------------------------------------- 5.1 
   cci1 = iCCI ( NULL , 0 , kCCI , PRICE_TYPICAL , 1 ) ;

   if ( New_Bar = = true & & cci1 > 100 & & flagval2 = = 1 )                  // && MA_3_t==0   && wayDOWN==true
     {                                             
         Opn_B = true ; New_Bar = false ; Cls_S = true ;                                   
         flagval1 = 1 ;
         flagval2 = 0 ;
     }
     
   if ( New_Bar = = true & & cci1 < - 100 & & flagval1 = = 1 )                  // && MA_4_t==0  && wayUP==true
     {                                                    
         Opn_S = true ; New_Bar = false ; Cls_B = true ;
         flagval2 = 1 ;
         flagval1 = 0 ;
     }
//--------------------------------------------------------------- 6 --

거래하지 않습니다! 누군가 새로운 시선으로 바라볼 수도 있습니다.

100(-100)이 거래되자마자 바보 결정!

상담사를 모십니다!

파일:
stoch_cros.mq4  17 kb