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

 

좋은 시간입니다, 여러분!

신경망 훈련을 위한 데이터를 준비하려고 합니다. 일 -

예를 들어 각 행(시점 - 막대)이 입력 벡터인 행렬이 있으며, 예를 들어 10000개의 열이 있습니다. 동적인 데이터(lines1, lines2의 수)가 있고 다른 시점에서 숫자가 변하는 경우 방법.

예를 들어, 행렬은 네트워크에 로드되고 각 행은 학습을 위한 벡터이지만 각 행에는 시간에 따라 동적으로 변하는 n개의 행이 더 있습니다.

솔루션의 가능한 추측은 동적 행의 열 수와 동일한 추가 열을 행렬에 추가하는 것입니다. 역동적 열의 열이 각 벡터에 추가되지만 말하자면 하나의 행, 간단하게 요약했습니다.

예를 들어

첫 번째 벡터

1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ... "line1 dynamic" 1 1 1 1 1

"동적 행2 " 1 1 1 1 1

결정

1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ... "line1 dynamic" 2 2 2 2 2

 
Top2n :

좋은 시간입니다, 여러분!

신경망 훈련을 위한 데이터를 준비하려고 합니다. 일 -

예를 들어 각 행(시점 - 막대)이 입력 벡터인 행렬이 있으며, 예를 들어 10000개의 열이 있습니다. 동적인 데이터(lines1, lines2의 수)가 있고 다른 시점에서 숫자가 변하는 경우 방법.

예를 들어, 행렬은 네트워크에 로드되고 각 행은 학습을 위한 벡터이지만 각 행에는 시간에 따라 동적으로 변하는 n개의 행이 더 있습니다.

솔루션의 가능한 추측은 동적 행의 열 수와 동일한 추가 열을 행렬에 추가하는 것입니다. 역동적 열의 열이 각 벡터에 추가되지만 말하자면 하나의 행, 간단하게 요약했습니다.

예를 들어

첫 번째 벡터

1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ... "row1 동적" 1 1 1 1 1

"동적 행2 " 1 1 1 1 1

결정

1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ... "line1 dynamic" 2 2 2 2 2

그러나 어휘가 동적으로 변경되는 언어(예: 한 시간에 한 번)를 배우는 방법은 무엇입니까? 이것이 신경망이 작동하는 방식입니다.
 
내가 이해하는 것처럼 MQL5가 있습니다. 아니면 동일합니까?
 
Andrey Sokolov :
내가 이해하는 것처럼 MQL5가 있습니다. 아니면 동일합니까?
절대적으로 동일합니다.
 
안녕하세요. 나는 어드바이저를 생성 했는데 잘 작동하지만 워킹 어드바이저와 함께 터미널을 껐다가 다시 터미널을 켜면 어드바이저가 모든 것을 새로운 방식으로 계산하기 시작합니다. 질문이 있습니다. 시작 시 입력 매개변수를 재설정하려면 Expert Advisor에 무엇을 작성해야 합니까?
 
XFaost :
안녕하세요. 나는 어드바이저를 생성 했는데 잘 작동하지만 워킹 어드바이저와 함께 터미널을 껐다가 다시 터미널을 켜면 어드바이저가 모든 것을 새로운 방식으로 계산하기 시작합니다. 질문이 있습니다. 시작 시 입력 매개변수를 재설정하려면 Expert Advisor에 무엇을 작성해야 합니까?
어드바이저는 입력 매개변수를 재설정하지 않고 종료되기 전에 열린 주문에 대한 정보를 수집해야 합니다.
 
XFaost :
안녕하세요. 나는 어드바이저를 생성 했는데 잘 작동하지만 워킹 어드바이저와 함께 터미널을 껐다가 다시 터미널을 켜면 어드바이저가 모든 것을 새로운 방식으로 계산하기 시작합니다. 질문이 있습니다. 시작 시 입력 매개변수를 재설정하려면 Expert Advisor에 무엇을 작성해야 합니까?
Expert Advisor가 어떻게 작동하는지 설명해 주십시오. 아마도 다른 원리를 사용해야 할 것입니다. 그리고 여전히 재설정해야 하는 경우 먼저 "시작 시"가 무엇을 의미하는지 결정해야 합니다. 그러나 일반적으로 재설정은 초기 위치로의 전환입니다. 초기 설정을 기록하고 적시에 설정하십시오.
 

인사말. 무슨 일이야?

EA는 가격보다 높거나 낮은 스탑으로 주문합니다. 그 중 하나가 트리거되면 가격이 지정된 것보다 더 많이 스탑에서 멀어지면 스탑이 조정되고 가격이 스탑 쪽으로 이동하면 변경되지 않습니다.

처음 에는 구매 주문서 만 작성했는데 모든 것이 제대로 작동합니다. 판매를 위해 거울에 추가됨 - 가격 변동에 따라 지정된 금액만큼 정류장이 조정되기 시작했습니다.

일반적으로 개별적으로 또는 구매를 위해 또는 판매를 위해 - 정상적으로 작동하고 두 부분이 함께 - 이러한 버그가 나옵니다.

#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict

extern double Lot             = 0.01 ;
extern int     StopLoss        = 50 ;
extern int     Slippage        = 5 ;
extern int     Delta           = 60 ;
extern int     Delta2          = 170 ;
extern int     Magic           = 321 ;

int ticket;
double price, sl, sl2;
datetime counted_bar = 0 ;

int OnInit ()
  {
     if ( Digits == 3 || Digits == 5 )
   {

       StopLoss      *= 10 ;
       Delta         *= 10 ;
       Delta2        *= 10 ;
      
   }

  
   return ( INIT_SUCCEEDED );
  }


void OnTick () {
//////        ПРОДАЖА  ///////////////////////////////////////////////////////
if (SellLimitCount()== 0 && SellCount()== 0 )
{    
  price = NormalizeDouble ( Bid - Delta* Point , Digits );
  sl = NormalizeDouble (price + StopLoss* Point , Digits );
  ticket = OrderSend ( Symbol (), OP_SELLSTOP , Lot, price, Slippage, sl, 0 , "" , Magic, 0 , Red);
}

if (SellCount()!= 0 )
  {
   if ( Bid < ( OrderStopLoss () - NormalizeDouble (StopLoss* Point , Digits )))
     {
     sl = NormalizeDouble ( Bid + StopLoss* Point , Digits );
     if ( OrderModify (ticket, price, sl, 0 , 0 , Red)) Print ( "Sell_Order_Modify_Ok" );
     else Print ( "ERROR_Sell_Order_Modify" );
     }  
  }
if (SellLimitCount()!= 0 )
{
   if ( Bid > ( OrderOpenPrice () + NormalizeDouble (Delta2* Point , Digits )))
   {    
     if ( OrderDelete (ticket, Red)) Print ( "BuyLimit_Order_Delete_Ok" );
     else Print ( "ERROR_BuyLimit_Odrer_Delete" );
   }  
}
/////////////////////////////////////////////////////////////////////////////////
///////       ПОКУПКА ////////////////////////////////////////////////////////
if (BuyLimitCount()== 0 && BuyCount()== 0 )
{
  price = NormalizeDouble ( Ask + Delta* Point , Digits );
  sl = NormalizeDouble (price - StopLoss* Point , Digits );
  ticket = OrderSend ( Symbol (), OP_BUYSTOP , Lot, price, Slippage, sl, 0 , "" , Magic, 0 , Blue);
}

if (BuyCount()!= 0 )
  {
     if ( Ask > ( OrderStopLoss () + NormalizeDouble (StopLoss* Point , Digits )))
     {
     sl = NormalizeDouble ( Ask - StopLoss* Point , Digits );
     if ( OrderModify (ticket, price, sl, 0 , 0 , Blue)) Print ( "Buy_Order_Modify_Ok" );
     else Print ( "ERROR_Buy_Order_Modify" );
     }  
  }
if (BuyLimitCount()!= 0 )
{
   if ( Ask < ( OrderOpenPrice () - NormalizeDouble (Delta2* Point , Digits )))
   {
     if ( OrderDelete (ticket, Blue)) Print ( "BuyLimit_Order_Delete_Ok" );
     else Print ( "ERROR_BuyLimit_Orde_Delete" );
   }  
}
///////////////////////////////////////////////////////////////////////////////

}
//+------------------------------------------------------------------+
int BuyLimitCount(){
int count= 0 ;
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--){
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )== true ){
if ( OrderMagicNumber ()==Magic){
if ( OrderType ()== OP_BUYSTOP )
count++;}}} return (count);}

int BuyCount(){
int count= 0 ;
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--){
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )== true ){
if ( OrderMagicNumber ()==Magic){
if ( OrderType ()== OP_BUY )
count++;}}} return (count);}

int SellLimitCount(){
int count= 0 ;
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--){
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )== true ){
if ( OrderMagicNumber ()==Magic){
if ( OrderType ()== OP_SELLSTOP )
count++;}}} return (count);}

int SellCount(){
int count= 0 ;
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--){
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )== true ){
if ( OrderMagicNumber ()==Magic){
if ( OrderType ()== OP_SELL )
count++;}}} return (count);}
 
Andrey Sokolov :

인사말. 무슨 일이야?

EA는 가격보다 높거나 낮은 스탑으로 주문합니다. 그 중 하나가 트리거되면 가격이 지정된 것보다 더 많이 스탑에서 멀어지면 스탑이 조정되고 가격이 스탑 쪽으로 이동하면 변경되지 않습니다.

처음 에는 구매 주문서 만 작성했는데 모든 것이 제대로 작동합니다. 판매를 위해 거울에 추가됨 - 가격 변동에 따라 지정된 금액만큼 정류장이 조정되기 시작했습니다.

일반적으로 개별적으로 또는 구매를 위해 또는 판매를 위해 - 정상적으로 작동하고 두 부분이 함께 - 이러한 버그가 나옵니다.

...

버그, 당신은 이해해야 합니다 - 당신이 보여준 모든 코드? 적어도 OnTick 기능은 거의 완전한 버그입니다 ...

 
Vitalie Postolache :

버그, 당신은 이해해야 합니다 - 표시된 전체 코드?

구매와 판매 모두에 대한 코드 부분이 모두 있는 경우 보류 중인 주문 이 트리거된 후 어떤 이유로든 중지가 가격 움직임의 모든 방향으로 수정됩니다. 그리고 구매 또는 판매만을 위한 코드의 일부가 있는 경우 가격이 가격에서 멀어질 때만 스탑이 의도한 대로 조정됩니다.