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

 
Valerius :


인용문을 업데이트해 보십시오. 서비스 - 견적 아카이브 - 통화 쌍 선택 - 다운로드.

도움이 되지 않으면 metatrader를 다시 설치하십시오.


몇 번이고 재설치도 해보고 새 계정도 열어봤는데.... 소용이 없네요. 이것은 무엇과 관련될 수 있습니까?

감사해요.

 
sidovi :


몇 번이고 재설치도 해보고 새 계정도 열어봤는데.... 소용이 없네요. 이것은 무엇과 관련될 수 있습니까?

감사해요.


그리고 메타트레이더가 설치된 폴더에서 설치 전 파일을 모두 삭제하셨나요?

견적 아카이브를 사용해 보셨습니까?

 
a196012a :

더 큰 볼륨의 모든 주문은 0.3 로트의 볼륨으로만 열립니다. SL에서 0.3 로트의 주문이 열리는 청산에 대한 응답으로 더 작은 볼륨의 모든 주문은 0.1 로트의 볼륨으로 열립니다. 0.1과 0.3만 있습니다. 다른 권은 없습니다.

SL에서 0.3 수량의 주문을 마감할 때 해당 주문이 열린 마감 시간(즉, 0.1 랏 수량의 주문)을 기억하십시오.

도와 주셔서 감사합니다.

내 게시물에 응답이 왔을 때 .my 이메일 주소로 메시지를 보내는 옵션이 구성된 위치를 동시에 알려주실 수 있습니까?

다시 한 번 진심으로 감사드립니다.


알고리즘이나 작성된 함수 자체가 실제로 필요한가요?
 
a196012a :

당신의 응답을 주셔서 감사합니다.

나에게 또는 알고리즘 또는 기능.

가장 중요한 것은 코드가 SL의 볼륨 0.3으로 주문을 마감한 후 시간 값을 기억한다는 것입니다.

이 동작을 정확히 코딩하는 방법을 모르겠습니다.

0.3 볼륨의 주문이 SL에 의해 마감된 경우

{
A2= 오픈한 마감에 대한 응답으로 소량 주문의 오픈 시간 값
}

===================================================== =================================================

볼륨이 0.1인 여러 주문이 CL에 의해 ONE TICK에서 마감된 경우

{

각 마감 주문 의 종가에서 0.3의 볼륨으로 별도의 주문을 엽니다.

}

===================================================== =================================================

0.3 볼륨의 여러 주문이 CL on ONE TICK에서 마감된 경우

{

볼륨이 0.1인 각 해당 주문의 영업 시간 값을 기억하십시오.

}

주문을 열고 닫는 작업 코드를 작성했습니다(첫 번째 게시물 참조).

그러나 0.1의 볼륨으로 주문을 여는 시간의 가치를 저장하기 위해 어떤 코드를 추가해야 할지 모르겠습니다.

그리고 SL의 동일한 틱에서 여러 주문이 마감된 경우 주문 개시를 코딩하고 영업 시간의 가치를 기억하는 방법을 모르겠습니다.

내 아이디어의 구현과 관련하여 내가 작성한 코드를 변경해야 하는 경우 변경해도 상관 없습니다.

내 모든 프로그램의 최종 목적은 시작 시간의 가치를 기억하는 것입니다. 그리고 다른 모든 작업(주문 개시 포함)은 이 목표에 종속되며 보조적 성격을 띠고 있습니다.

그것들 없이 할 수 있는 방법을 알았다면 코드에 포함하지 않았을 것입니다.

다시 한번 감사합니다.


여기에서 나는 프로그램에 대해 던졌다. 봐, 이해해. 댓글이 있습니다.

extern int MagicNumber= 123 ;

datetime time;
//=================================================================
void start()
{
int er,se;

if (prov_open_orders()) //Проверяем, есть ли открытые ордера
 {
  se=sear(); //Ищем последний ордер, который закрылся по стопу. Если последний ордер закрылся по профиту
             //то просто возвращается нулевое значение
             //Если Последний ордер закрылся по по стопу, то ищем ордер с лотом 0.1 и возвращаем
           //его время открытия. В переменной time будет время открытия ордера с лотом 0.1
   if (se== 1 )
   {
     if ( OrderType ()== OP_BUY && OrderProfit ()< 0 )
     { //Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
      er= OrderSend ( Symbol (), OP_SELL , 0.3 , Bid , 3 , Bid + 400 * Point , Bid - 200 * Point , "jfh" ,MagicNumber);
      time=SearTim(se); //Теперь находим время ордера с лотом 0.1
     }
   }
   if (se== 2 )
   {
     if ( OrderType ()== OP_SELL && OrderProfit ()< 0 )
     { //Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
      er= OrderSend ( Symbol (), OP_BUY , 0.3 , Ask , 3 , Ask - 400 * Point , Ask + 200 * Point , "jfh" ,MagicNumber);
      time=SearTim(se); //Теперь находим время ордера с лотом 0.1
     }
   }
 }

return ;
}

//========================
bool prov_open_orders()
{
for ( int is= OrdersTotal ()- 1 ; is >= 0 ; is--)
   {
     if ( OrderSelect (is, SELECT_BY_POS , MODE_TRADES ))
      {
       if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber)
         {
           if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL )
           {
             return ( false ); // есть открытые ордера (любые)
           }
         }
      }
   }
return ( true );
}

//=================================================================
datetime SearTim( int s)
{
for ( int is= OrdersHistoryTotal (); is>= 0 ; is--)
   {
     if ( OrderSelect (is, SELECT_BY_POS , MODE_HISTORY ))
      {
       if ( OrderSymbol () == Symbol () && OrderMagicNumber () == MagicNumber)
         {
           if ( OrderType ()== OP_SELL && OrderProfit ()< 0 && OrderLots ()== 0.1 )
           { //Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
             return ( OrderOpenTime ());
           }
           if ( OrderType ()== OP_BUY && OrderProfit ()< 0 && OrderLots ()== 0.1 )
           { //Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
             return ( OrderOpenTime ());
           }
         }
      }
   }
return ( NULL );
}

//=================================================================
int sear()
{
for ( int is= OrdersHistoryTotal (); is>= 0 ; is--)
   {
     if ( OrderSelect (is, SELECT_BY_POS , MODE_HISTORY ))
      {
       if ( OrderSymbol () == Symbol () && OrderMagicNumber () == MagicNumber)
         {
           if ( OrderProfit ()> 0 )
           { //Если  закрылся по профиту то просто ухоим из цикла.
               return ( 0 );
           }
           if ( OrderType ()== OP_SELL && OrderProfit ()< 0 )
           { //Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
             return ( 2 );
           }
           if ( OrderType ()== OP_BUY && OrderProfit ()< 0 )
           { //Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
             return ( 1 );
           }
         }
      }
   }
return ( 0 );
}
 
Valerius :


그리고 메타트레이더가 설치된 폴더에서 설치 전 파일을 모두 삭제하셨나요?

견적 아카이브를 사용해 보셨습니까?


예, 0 결과 :((
 
sidovi :

예, 0 결과 :((


그런 다음 지원을 위해 DC에만 문의하십시오 ...

나는 이것을 처음 본다.

 
Valerius :


그런 다음 지원을 위해 DC에만 문의하십시오 ...

나는 이것을 처음 본다.


Windows 10에 이에 영향을 주는 서비스가 있다고 생각하십니까?
 
sidovi :

Windows 10에 이에 영향을 주는 서비스가 있다고 생각하십니까?

아니요. 그런거 없다
 
Victor Nikolaev :

아니요. 그런거 없다

감사해요
 
a196012a :

당신의 도움을 주셔서 대단히 감사합니다

저는 Kovalev의 교과서와 그 안에 설명된 기능에서 프로그래밍의 기초를 배우고 있습니다.

당신의 코드에서 교과서나 코드베이스에서 만나지 못한 기능을 만났습니다.

내가 잘 모르는 기능들이 있다

검색();

씨팀(SeaTim);

prov_open_orders()

그들 에 대해 읽을 수 있는 곳 을 알려 주시면 정말 감사하겠습니다 .

바로 같은 코드에서 .