[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 5. - 페이지 179

 
Rustbunch :

고문이나 대본을 찾도록 도와주세요. 아마도 준비된 것이 있을 것입니다...

고문은 특정 시간에 특정 엘크와 이익으로 시장에서 거래를 시작해야 합니다. 그에게 더 이상 필요한 것은 없습니다...

미리 감사드립니다.

모든 고문은 MetaEditor와 그에 상응하는 스크립트에서 이 작업을 수행합니다!

 if (Hour() >= xx) открыть;
 
그런 다음 배열에 주문에 대한 계정이 있습니다.
 
if (!PozyProstavleny){ ArrayResize(Buy,Raz);ArrayResize(Sell,Raz);
   
           Price= (Ask+Dist*Point) ; TP_BUY=(Price+TP*Point);  SL_BUY= (Price- SL*Point);
           Price_SELL= (Bid-Dist*Point) ;  TP_SELL=Price_SELL-TP*Point;  SL_SELL=Price_SELL+SL*Point; K=1;
           
   for(int Raz1=0;Raz1<Raz;Raz1++){
   
           Sleep(2000); RefreshRates();  for(int A=25;A>=0;A--){if(IsTradeAllowed())break;if(A==0) Comment(" эксперту не разрешено 
торговать или поток для выполнения торговых операций занят "); }           
  tyccBuy= OrderSend (Symbol( ), OP_BUYSTOP,  Lot ,NormalizeDouble(Price, Digits), 5, NormalizeDouble( SL_BUY,Digits),  
 NormalizeDouble( TP_BUY,Digits), NULL, 450, 0, CLR_NONE);
   Buy[Raz1]= tyccBuy;
           Price= (Price+Dist*Point) ; TP_BUY= (Price+TP*Point); SL_BUY= (Price- SL*Point);
           Error=GetLastError();
     if (Error!=0){ string errorcomment = "Ошибка открытия ордера байстоп  "  + " " + Symbol() +  " " + ErrorDescript(Error); 
           Print (errorcomment);}
           
           Sleep(2000); RefreshRates();  for( A=25;A>=0;A--){if(IsTradeAllowed())break;if(A==0) Comment(" эксперту не разрешено торговать
 или поток для выполнения торговых операций занят "); }        
           Sell[Raz1]=OrderSend (Symbol( ), OP_SELLSTOP,  Lot ,NormalizeDouble(Price_SELL, Digits), 5, NormalizeDouble( SL_SELL,Digits), 
  NormalizeDouble( TP_SELL,Digits), NULL, 450, 0, CLR_NONE);
     Price_SELL= (Price_SELL -Dist*Point) ;TP_SELL=Price_SELL-TP*Point;   SL_SELL=Price_SELL+SL*Point;
            Error=GetLastError();if (Error==0)
            
            {errorcomment = "Ошибка открытия ордера селлстоп  "  + " " + Symbol() +  " " + ErrorDescript(Error); 
        Print (errorcomment);} PozyProstavleny=1; 
                       }
                       }   
                        
 

모두에게 좋은 하루!

저는 초보자입니다. 처음으로 테스터에서 아이디어를 코드로 번역하려고 합니다.

아이디어는 간단합니다. 각 시간 초의 시작 가격에서 하나의 주문을 위아래로 교대로 엽니다.

간단한 코드를 작성했습니다 .... 하지만 문제는 촛불 하나를 열 때 어떤 이유로 프로그램이 때때로 1 개 이상의 주문을 열 수 있다는 것입니다.

1초 이내에 1틱 이상이 오면 이런 일이 일어나는 것 같아요.

옵션으로 if( ) 조건 헤더를 넣어봤는데..

주문 총계 ( )==0

단 하나의 주문만 실제로 열립니다.



그러나이 양초를 열 때 다음날이 양초가 열리지 않기 때문에이 옵션은 나에게 적합하지 않습니다.

거래에 이미 다른 임의 의 수의 주문 이 있습니다.

나는 또한 OrderSend(Symbol(),OP_BUY,0.1,Price,3,SL,TP); return으로 start() 실행을 중단합니다. .... 도움이되지 않았습니다.


1초 안에 모든 틱에 1개의 주문만 열리도록 만드는 방법을 알려주시면 모두 감사하겠습니다.

정수 시작()

{
두 배 가격=묻다;
더블 SL=가격-300*포인트;
더블 TP=가격+300*포인트;
if( 시()==10 && 분()== 00 && 초()==00)
OrderSend(Symbol(),OP_BUY,0.1,가격,3,SL,TP);
}

 
등.
 
Dimka-novitsek :
글쎄요, 방법은 모르겠지만 데이터를 저장하는 것은 필수입니다.

 //записать

void SaveArray( string File, double &a[])
{
     int h = FileOpen (File, FILE_BIN | FILE_WRITE );
     if (h> 0 )
    {
       int sz = ArraySize (a); 
       FileWriteArray (h,a, 0 ,sz);
       FileClose (h);
    }
}

//прочитать

void OpenArray( string File, double &a[], int sz)
{
     int h = FileOpen (File, FILE_BIN | FILE_READ );
     if (h> 0 )
    {
       ArrayResize (a,sz);
      FileReadArray (h,a, 0 ,sz);
       FileClose (h);
    }
}
 
solnce600 :

모두에게 좋은 하루!

저는 초보자입니다. 처음으로 테스터에서 아이디어를 코드로 번역하려고 합니다.

아이디어는 간단합니다. 각 시간 초의 시작 가격에서 하나의 주문을 위아래로 교대로 엽니다.

간단한 코드를 작성했습니다 .... 하지만 문제는 촛불 하나를 열 때 어떤 이유로 프로그램이 때때로 1 개 이상의 주문을 열 수 있다는 것입니다.

1초 이내에 1틱 이상이 오면 이런 일이 일어나는 것 같아요.

옵션으로 if( ) 조건 헤더를 넣어봤는데..

주문 총계 ( )==0

단 하나의 주문만 실제로 열립니다.



그러나이 양초를 열 때 다음날이 양초가 열리지 않기 때문에이 옵션은 나에게 적합하지 않습니다.

거래에 이미 다른 임의의 수의 주문이 있습니다.

나는 또한 OrderSend(Symbol(),OP_BUY,0.1,Price,3,SL,TP); return으로 start() 실행을 중단합니다. .... 도움이되지 않았습니다.

1초 안에 모든 틱에 1개의 주문만 열리도록 만드는 방법을 알려주시면 모두 감사하겠습니다.

정수 시작()

{
두 배 가격=묻다;
더블 SL=가격-300*포인트;
더블 TP=가격+300*포인트;
if( 시()==10 && 분()== 00 && 초()==00)
OrderSend(Symbol(),OP_BUY,0.1,가격,3,SL,TP);
}

이것이 TechZad라면 작업 중입니다!
 
감사해요!!!!!!
 

solnce600 :

1초 안에 모든 틱에 1개의 주문만 열리도록 만드는 방법을 알려주시면 모두 감사하겠습니다.

 int start()
{
...

int ot= OrdersTotal ();

bool open_allowed = true ;

if (ot> 0 )
{
   if ( OrderSelect (ot- 1 ,SELECT_BY_POS))
   {
       if ( TimeCurrent ()-OrderOpenTime()<= 1 ) open_allowed= false ;   //если разница между текущим временем сервера и временем открытия последнего ордера 1 секунда или меньше, запретить торговлю
   }
}

if (open_allowed)
{
   //открываемся
}
...
}
 
바로 지금.. 대략 .시작하기 전에 몇 가지 변수를 선언하고 시간을 기억하십시오. 주문한 후에는 진실과 동일합니다. 설정하기 전에 확인하십시오. 나는 임시 변수에 능숙하지 않습니다. 주문 하기 전에 이 변수에 지정된 시간이 추가되었는지, 현재 시간보다 클지 여부를 확인하십시오. 그렇지 않다면 주문을 보내고 새로운 시간을 다시 기억하십시오! 예, 그런 것입니다. 아무리 간단해도!!!