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

 
lottamer :

pliz ...조건이 if=true인 경우 if 시리즈를 종료하는 방법을 알려주세요.

만약

만약

if (TRUE) - 하지만 처음부터 다시 시작해야 하며 더 이상 계단을 올라가지 마십시오.

만약

만약

.......


만약

만약

if (TRUE) - 하지만 처음부터 다시 시작해야 하며 더 이상 계단을 올라가지 마십시오.

또 다른 {

만약

만약

.......

}// if (TRUE) - 하지만 처음부터 다시 시작해야 하며 더 이상 계단을 올라가지 마십시오.

실제로 약 99.9%의 경우 알고리즘 구현에 대해 충분히 생각하지 않았다는 의미입니다.

 
VladislavVG :

만약

만약

if (TRUE) - 하지만 처음부터 다시 시작해야 하며 더 이상 계단을 올라가지 마십시오.

또 다른 {

만약

만약

.......

}// if (TRUE) - 하지만 처음부터 다시 시작해야 하며 더 이상 계단을 올라가지 마십시오.

실제로 약 99.9%의 경우 알고리즘 구현에 대해 충분히 생각하지 않았다는 의미입니다.


:)) 이미 탈출구를 찾은 것 같습니다

return (0) - 다음과 같은 경우 기적적으로 모두 종료합니다.

 
VladislavVG :

만약

만약

if (TRUE) - 하지만 처음부터 다시 시작해야 하며 더 이상 계단을 올라가지 마십시오.

또 다른 {

만약

만약

.......

}// if (TRUE) - 하지만 처음부터 다시 시작해야 하며 더 이상 계단을 올라가지 마십시오.

실제로 약 99.9%의 경우 알고리즘 구현에 대해 충분히 생각하지 않았다는 의미입니다.

}, else, return 또는 break 또는 continue(for 루프)를 사용합니다.
 
rigonich :

예금 통화의 이익 실현 크기는 OrderProfit() 함수에 의해 반환됩니다. 포인트 단위 - 종가에서 시가를 뺀 값, 마지막으로 마감된 포지션을 찾는 방법 또는 이에 대한 기성품 함수를 얻을 수 있는 위치는 다음과 같습니다. 내 생각에는 단지 당신을 위해 여러 번 설명했습니다.


바로 그거죠. 먼저 마지막 마감 위치 GetTicketLastPos 의 티켓을 가져간 다음 이 티켓을 사용하여 표준 기능을 사용하여 필요한 것을 추출해야 합니다.

감사하다.

 
xant :

리고니치

자, 드디어 이해가 되기 시작했습니다. 따라서 중괄호 안의 짧은 줄은 함수 호출이며 함수 자체는 어딘가에 배치되어야 합니다.

이제 순서대로.

첫 번째 init 함수에 호출을 추가하고 init 함수가 실행된 직후에 수행합니다. 즉, 이렇게 하면 맞겠죠?

마찬가지로 시작 블록에 두 번째 함수 호출을 추가합니다. 변수 계산 후 바로 하면 맞나요? 예를 들면 다음과 같습니다.

이 처음 2단계가 맞습니까?

글쎄요, 나는 그에게 즉시 감사했습니다.


거의. init에서 호출을 삽입하기 전의 첫 번째 {}를 제거합니다. 호출 전후에 모두 {}입니다. 이제 함수 코드를 복사하고 전체 고문의 코드 뒤에 배치하고 어드바이저를 컴파일합니다.

죄송합니다 제가 실수를 했네요 니 눈에 코드가 없으면 어렵습니다.

 int init()
{
fGet_MineGV();
//... и далее мой код, который был ранее (без первой  { )
 

리고니치

짝수개의 괄호를 남기기 위해 괄호를 제거했습니다. 즉, 두 함수 모두 중괄호 없이 삽입됩니다.

다음과 같이 밝혀졌습니다.

 int init()
{
    fGet_MineGV();
//... и далее мой код
 //...разрыв кода...
if ((SUA== 100 )&&(zigNN> 4.5 ))
{
BUA= 0 ;
BUA1= 0 ;
}

fSave_MineGV();
//... продолжение моего кода...

그런 다음 고문의 전체 코드 뒤에 삽입했습니다.

}
}
}


Comment(fd+f+d);

}
//... тут мой советник закончился


         void fGet_MineGV ( string fs_PrefName = "" ) // префикс имени переменной
     {
         string ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_1" );
         if ( GlobalVariableCheck (ls_Name)) SUA = GlobalVariableGet (ls_Name);
        ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_2" );
         if ( GlobalVariableCheck (ls_Name)) SUA1 = GlobalVariableGet (ls_Name);
        ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_3" );
         if ( GlobalVariableCheck (ls_Name)) BUA = GlobalVariableGet (ls_Name);
        ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_4" );
         if ( GlobalVariableCheck (ls_Name)) BUA1 = GlobalVariableGet (ls_Name);
     }
               
       void fSave_MineGV ( string fs_PrefName = "" ) // префикс имени переменной
{
 static datetime ldt_NewBar;
 datetime ldaTBeginBar = iTime ( Symbol (), 1 , 0 )
 //---- Сохраняемся в начале каждой минуты
 if (ldt_NewBar == ldaTBeginBar) return ;
 ldt_NewBar = ldaTBeginBar;
 //---- Сохраняем поочереди значения каждой переменной
 string ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_1" );
 GlobalVariableSet (ls_Name, SUA);
 ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_2" );
 GlobalVariableSet (ls_Name, SUA1);
 ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_3" );
 GlobalVariableSet (ls_Name, BUA);
 ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_4" );
   GlobalVariableSet (ls_Name, BUA1);
}

코드 후에는 이것을 이해합니다. 마지막 중괄호 뒤에는 실제로 조언과 분리되어 있습니다. 그래서?

맞다면 컴파일 후 생성되는 내용은 다음과 같습니다.

'fGet_MineGV' - function already defined and has a body         K:\TEST\experts\01___AUDUSD.mq4 (1679, 14)
'ls_Name' - variable already defined                            K:\TEST\experts\01___AUDUSD.mq4 (1681, 16)
2 error(s), 0 warning(s)        

Извиняюсь, ошибся, сложно, когда нет кода пнред глазами.Вот так.
코드가 짧다면 여기에 게시하고 모든 문제를 신속하게 해결할 것입니다. 그러나 EA에는 1700개의 라인이 있고 3개의 외부 지표가 추가되어 대부분의 계산이 수행됩니다. 따라서 우편으로만 가능하지만 이것은 분명히 무료로 수행되지 않습니다.
 
xant :

리고니치

짝수 개의 괄호를 남기기 위해 괄호를 제거했습니다. 즉, 두 함수 모두 중괄호 없이 삽입됩니다.

다음과 같이 밝혀졌습니다.

그런 다음 고문의 전체 코드 뒤에 삽입했습니다.

코드 후에는 이것을 이해합니다. 마지막 중괄호 뒤에는 실제로 조언과 분리되어 있습니다. 그래서?

맞으면 컴파일 후 생성되는 내용은 다음과 같습니다.


이러한 경고는 EA의 함수와 변수가 이미 이전에 정의되었음을 나타냅니다. 이전에 붙여넣은 코드를 삭제하는 것을 잊었습니까? 그렇지 않은 경우 올빼미 코드를 보내 주시면 기능을 삽입하겠습니다.
 
lottamer :


바로 그거죠. 먼저 마지막 마감 위치 GetTicketLastPos 의 티켓을 가져간 다음 이 티켓을 사용하여 표준 기능을 사용하여 필요한 것을 추출해야 합니다.

감사하다.


젠장... 마지막으로 마감된 포지션 의 그런 기능 티켓은 없습니다,

마지막 열린 위치 GetTicketLastPos의 티켓이 있습니다 ...

 
xant :

리고니치

짝수개의 괄호를 남기기 위해 괄호를 제거했습니다. 즉, 두 함수 모두 중괄호 없이 삽입됩니다.

다음과 같이 밝혀졌습니다.

그런 다음 고문의 전체 코드 뒤에 삽입했습니다.

코드 후에는 이것을 이해합니다. 마지막 중괄호 뒤에는 실제로 조언과 분리되어 있습니다. 그래서?

맞다면 컴파일 후 생성되는 내용은 다음과 같습니다.

코드가 짧다면 여기에 게시하고 모든 문제를 신속하게 해결할 것입니다. 그러나 EA에는 1700개의 라인이 있고 3개의 외부 지표가 추가되어 대부분의 계산이 수행됩니다. 따라서 우편으로만 가능하지만 이것은 분명히 무료로 수행되지 않습니다.

이것이 내가 생각하는 방법입니다.

 //+------------------------------------------------------------------+
//|                                                       Priner.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"


double Var1, Var2, Var3, Var4; // 4-ре переменных для сохранения (у Вас они свои !!!)
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   fGet_MineGV();
//----
//Здесь ваш код
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   //Здесь ваш код
//----
   fSave_MineGV();
   return ( 0 );
  }
//+------------------------------------------------------------------+
void fSave_MineGV ( string fs_PrefName = "" )     // префикс имени переменной
  {
     static datetime ldt_NewBar;
     datetime ldaTBeginBar = iTime ( Symbol (), 1 , 0 );
//----
     //---- Сохраняемся в начале каждой минуты
     if (ldt_NewBar == ldaTBeginBar) return ;
    ldt_NewBar = ldaTBeginBar;
     //---- Сохраняем поочереди значения каждой переменной
     string ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_1" );
     GlobalVariableSet (ls_Name, Var1);
    ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_2" );
     GlobalVariableSet (ls_Name, Var2);
    ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_3" );
     GlobalVariableSet (ls_Name, Var3);
    ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_4" );
     GlobalVariableSet (ls_Name, Var4);
//----
  }
void fGet_MineGV ( string fs_PrefName = "" )     // префикс имени переменной
  {
     string ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_1" );
//----
     //---- Восстанавливаем значения переменных
     if ( GlobalVariableCheck (ls_Name)) Var1 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_2" );
     if ( GlobalVariableCheck (ls_Name)) Var2 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_3" );
     if ( GlobalVariableCheck (ls_Name)) Var3 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol (), "_N_4" );
     if ( GlobalVariableCheck (ls_Name)) Var4 = GlobalVariableGet (ls_Name);
  }  
//----
 
lottamer :


젠장... 최근 마감된 위치의 기능 티켓 이 없습니다.

마지막 열린 위치 GetTicketLastPos의 티켓이 있습니다 ...


마지막으로 마감된 티켓이 기록에 있습니다.