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

 
//comment 줄 끝 - 두 개의 슬래시 뒤에 있는 모든 것 또는 컴파일러가 슬래시를 읽지 않는 방법.
 
Dimka-novitsek :

1. 해당 기간의 이력에 주문이 없는 경우 실행되며, 이 경우 주기를 계속하는 것이 의미가 없습니다.

감사해요!!! 개가 묻힌 곳.. 와우! 그는 어떻게 수정되었습니까?

2. 특히 이익실현 시 발생한 주문을 찾으려면 TP 값을 주문 마감 가격 값과 비교해야 합니다.

먼저 히스토리 사이클에서 특정 순서를 선택한 다음, 이런 식으로 비교하는 것 같습니다.


특정 주문이 있는 경우, 즉 티켓 번호를 알고 있으면 주기가 필요하지 않고 OrderSelect (티켓, SELECT_BY_TICKET, MODE_HISTORY)를 선택하기만 하면 됩니다.
 
감사해요!! 지금 시도하겠습니다!
 
Dimka-novitsek :

(!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) 계속하면; 이것이 내주기의 방식입니다. 기간의 역사에 주문이없고이 경우주기를 계속하는 것이 의미가 없다면 계속하십시오!

괜찮아?

우와 미스테리!!!


그런 다음 중단 하거나 반환 합니다. 계속하다; -- 루프 연속 연산자.
 
ilunga :

왜 똑같은 걸 계속 비교하니?

글쎄, 어떻게 비교합니까?
 
Dimka-novitsek :

if(Stoch_1>Stoch_2) { 플래그1=1 ; 인쇄(플래그1, 플래그2, 플래그3, 플래그4); }


if(Stoch_1<Stoch_2 && flag1==1) flag2=1; 인쇄(플래그1, 플래그2, 플래그3, 플래그4); }

if ((Stoch_1>Stoch_2) && flag1==1 && flag2==1) {flag3=1; 인쇄(flag1,flag2,flag3,flag4);PlaySound("alert.wav");}


if(Stoch_1<Stoch_2 && 플래그1==1 && 플래그2==1 && 플래그3==1) 플래그4=1;
{인쇄(플래그1, 플래그2, 플래그3,플래그4);}
if(Stoch_1>Stoch_2 && 플래그1==1 && 플래그2==1 && 플래그3==1 && 플래그4==1)
{ 주문 보내기(기호(), OP_SELL, 0.01, 입찰, 0, 0, 0, NULL, 450, 0, CLR_NONE);
인쇄("출력");}



플래그1=0;
플래그2=0;
플래그3=0;
플래그4=0;

당신이 배울 것이라는 것을 이해하고 당신이 배우기 위해 적어도 뭔가를 작성하십시오 ... 나는 심지어 그들이 역할을 할 수 있도록 브래킷을 배열했습니다. 내 생각에는.


컴파일러에서 코드가 24개의 오류를 생성했지만!!! 어쨌든, 부주의한 도움에도 감사합니다.... 아이디어에 대해... (이제 작동합니다. 기본적으로 이것을 시도했지만 구두점이 실패했습니다)
 

다시 한번 포지션 인덱스가 무엇인지 궁금합니다. 이것이 히스토리에 있는 위치의 일련 번호인 경우 이 기능은 무엇을 합니까?

GetIndexLastPos 마지막 오픈 포지션 의 인덱스 또는 -1 ???

마지막으로 열린 인덱스는 최신이기 때문에 항상 1입니다!!

분명히 INDEX를 잘못 이해했습니다 ...

누가 알겠어?

 
lottamer :

그래서 어떻게 비교합니까?

시작하자:

1. if (Stoch_1>Stoch_2) flag1= 1 ; , 다음 조건(Stoch_1<Stoch_2 && flag1== 1 )은 원칙적으로 참일 수 없습니다. 왜냐하면 Stoch_1<Stoch_2 flag1==0이고 flag1== 1이면 Stoch_1>Stoch_2이기 때문입니다. 이 함수의 모든 후속 조건과 동일하므로 플래그 1만 값을 변경할 수 있습니다. 즉, 프로그램은 처음 두 줄을 실행하고, 세 번째 줄을 건너뛰고 , 네 번째 줄을 실행하고 , 다섯 번째 줄을 건너뛰고, 여섯 번째 줄을 실행하고, 일곱 번째 줄을 실행합니다. , 나머지는 모두 건너뜁니다.


	          
 
xant :

타라스비,

Var1이라는 이름과 같은 다른 이름은 init 내부에 fGet_MineGV() 블록을 삽입하고 staft 내부에 fSave_MineGV() 블록을 삽입했습니다.

컴파일할 때 EA는 많은 오류를 생성했습니다.

하나씩 해보았습니다. 처음에는 init에 삽입되어 컴파일됩니다. 오류 0, 한 가지 참고 사항: 은(는) 참조되지 않으며 exp-file에서 제거됩니다. 글쎄, 여기에서 그는 파일이 아직 존재하지 않기 때문에 파일을 찾을 수 없다는 것이 분명합니다. 그는 직원 안에 등록해야 합니다.

그래서 staft 내부에 두 번째 블록을 쓰려고 하면 많은 오류가 발생합니다.

구조적 알고리즘:

 int init()
{
    fGet_MineGV();
}
int start()
{
    fSave_MineGV();
}
double Var1, Var2, Var3, Var4;   // 4-ре переменных для сохранения (у Вас они свои !!!)
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);
//----
}
// в init()
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 :

다시 한번 포지션 인덱스가 무엇인지 궁금합니다. 이것이 히스토리에 있는 위치의 일련 번호인 경우 이 기능은 무엇을 합니까?

GetIndexLastPos 마지막 오픈 포지션의 인덱스 또는 -1 ???

마지막으로 열린 인덱스는 최신이기 때문에 항상 1입니다!!

분명히 INDEX를 잘못 이해했습니다 ...

누가 알겠어?


마지막으로 열린 인덱스는 최신이기 때문에 항상 1입니다!! 1이 아니라 0이고 역사에 없습니다. 히스토리에서 0은 마지막으로 마감된 포지션 또는 마지막으로 삭제된 주문의 인덱스이며, 항상 그런 것은 아니며, 시장가 주문 외에도 포지션이 아닌 Pending 주문 도 있기 때문입니다. 또한 인덱스 0은 포지션에 대한 것일 수 있습니다. 다른 악기에 대해 열렸습니다.