Begemot7 : 변수를 잃는다는 것이 무엇을 의미하는지 설명해 주시겠습니까? 그리고 고문도 이것을 확인했다는 의미에서 찾을 수 있습니까?
나는 실제 및 데모에 대한 모든 어드바이저의 변수에 주문 및 위치에 대한 중요한 데이터를 저장하지 않습니다. EA 로직에 필요한 데이터를 쓸 수 있는 최대치는 주문 코멘트에 있습니다. 포지션이 있는지, 얼마나 있는지, 주문이 있는지, 마감된 포지션이 있는지, 마감된 방법을 찾아야 할 때 시장 포지션/주문 또는 과거 데이터를 순환하면서 필요한 주문을 찾고 필요한 정보를 추출합니다. 따라서 컴퓨터가 예기치 않게 꺼질 때 손실될 수 있으므로 모든 중요한 정보는 변수에 저장되지 않습니다. 나중에 언제든지 꺼낼 수 있습니다. 어떻게 든 터미널의 전역 변수에 저장하려고했습니다. 컴퓨터가 꺼지거나 멈출 때 정보가 항상 거기에 저장되는 것은 아닙니다. 그리고 그곳에 있는 새로운 정보의 기록을 지속적으로 모니터링하는 것은 어쩐지 씁쓸합니다 ... 내가 필요한 순간에 필요한 것을 찾기가 더 쉽습니다.
세 명의 자필 고문이 있습니다. 전략은 동일하며 도구에 따라 구현이 약간 다를 뿐입니다. 쌍: EURUSD, EURGBP 및 USDJPY. 처음 두 개는 모든 것이 정상이고 마지막 두 개는 거래되지 않습니다. 브로커 - FX-트렌드. 계정은 최소 로트가 0.01인 미니 계정입니다.
동시에: 데모 계정에서는 모든 것이 정상입니다. 테스터의 동일한 실제 계정 으로 테스터에서 시작하면 거래가 열립니다. 그러나 현실에서는 그렇지 않습니다. 주문(및 기타 모든 항목)을 열기 위한 그래픽 마커가 성공적으로 배치되었습니다. 로그에서 - 절대적으로 아무것도 아닙니다.
artmedia70 : 나는 실제 및 데모에 대한 모든 어드바이저의 변수에 주문 및 위치에 대한 중요한 데이터를 저장하지 않습니다. EA 로직에 필요한 데이터를 쓸 수 있는 최대치는 주문 코멘트에 있습니다. 포지션이 있는지, 얼마나 있는지, 주문이 있는지, 마감된 포지션이 있는지, 마감된 방법을 찾아야 할 때 시장 포지션/주문 또는 과거 데이터를 순환하면서 필요한 주문을 찾고 필요한 정보를 추출합니다. 따라서 컴퓨터가 예기치 않게 꺼질 때 손실될 수 있으므로 모든 중요한 정보는 변수에 저장되지 않습니다. 나중에 언제든지 꺼낼 수 있습니다. 어떻게 든 터미널의 전역 변수에 저장하려고했습니다. 컴퓨터가 꺼지거나 멈출 때 정보가 항상 거기에 저장되는 것은 아닙니다. 그리고 그곳에 있는 새로운 정보의 기록을 지속적으로 모니터링하는 것은 어쩐지 씁쓸합니다 ... 내가 필요한 순간에 필요한 것을 찾기가 더 쉽습니다.
그렇군요...더불어 안전하게 플레이하세요. 물론 모든 주문을 정렬하는 것이 더 정확합니다. 그러나 여기에 특정한 경우가 있습니다. GlobalVariables가 손실되면 이 DC를 떠나야 합니다. GlobalVariables는 컴퓨터에 저장되지 않고 DC 내부에 저장되지 않고 최대 3개월 동안 보관됩니다. 아니면 내가 틀렸습니까?
DC가 일부러 그러는 건가요? MT4는 중개인이 쉽게 조종할 수 있는 단말이라 속임수가 많다고 하는데 누가 들어봤나?
정말 이해가 되지 않습니다. 물론, x ...... 구름을 생성하지 않는 한 전역 변수를 파괴하는 요점이 무엇입니까? 문서에서 인용: "클라이언트 터미널의 전역 변수는 MQL4 프로그램의 전역 수준에서 선언된 변수와 혼동되어서는 안 됩니다. 전역 변수는 마지막 액세스 순간부터 4주 동안 클라이언트 터미널에 존재하며 이후 자동으로 소멸됩니다. 글로벌 변수는 새로운 값을 설정할 뿐만 아니라 글로벌 변수의 값을 읽는 것으로 간주됩니다. 클라이언트 터미널의 글로벌 변수 는 클라이언트 터미널에서 실행되는 모든 MQL4 프로그램에서 동시에 사용 가능합니다. 당신의 돈을 위해 싸워라.
전문가의 도움이 필요합니다!!! 이미 이 코드로 머리가 깨졌습니다... 4개의 버퍼가 있으며 그 중 2개는 올바르게 작동하지만(Buffer &buffer2) 나머지 2개는 작동하지 않습니다. 특정 조건이 발생하면 버퍼가 채워지고 이 값이 초과되면 버퍼가 삭제(0)되지만 나머지 2개의 버퍼는 여전히 차트에 멈춥니다. 그것을 고칠 방법을 말해?
//--- Функция расчета буферов CountZZ(BuferUp,BuferDn,iPeriod,Dev,Step);int CountZZ( double & ExtMapBuffer[], double & ExtMapBuffer1[], double & ExtMapBuffer2[], double & ExtMapBuffer3[], int ExtDepth, int ExtDeviation, int ExtBackstep )
{
int shift, back,lasthighpos,lastlowpos;
double val,res;
double curlow,curhigh,lasthigh,lastlow,lastlow1,lasthigh1;
int count = iBars(pair,tf)-ExtDepth;
for (shift=count; shift>= 0 ; shift--)
{
//--- Расчитываем буфер BuferUp
val = iLow(pair,tf,iLowest(pair,tf,MODE_LOW,ExtDepth,shift));
if (val==lastlow) val= 0.0 ;
else
{
lastlow=val;
if ((iLow(pair,tf,shift)-val)>(ExtDeviation* Point )) val= 0.0 ;
else
{
for (back= 1 ; back<=ExtBackstep; back++)
{
res=ExtMapBuffer[shift+back];
if ((res!= 0 )&&(res>val)) ExtMapBuffer[shift+back]= 0.0 ;
}
}
}
ExtMapBuffer[shift]=val;
//-------------------------------------------------------------------- //--- Расчитываем буфер BuferUp2if (ExtMapBuffer[shift]> 0.0 )
{
if (use.narrow.bands) val = MathMin (iClose(pair,tf,shift),iOpen(pair,tf,shift));
else {val = MathMax (iClose(pair,tf,shift),iOpen(pair,tf,shift));
val = MathMin (val, MathMin (iHigh(pair,tf,shift+ 1 ),iHigh(pair,tf,shift- 1 )));}
if (ExtMapBuffer[shift+back]== 0.0 ) ExtMapBuffer1[shift+back]= 0.0 ;
}
ExtMapBuffer1[shift]=val;
//-------------------------------------------------------------------- //--- Расчитываем буфер BuferDn
val=iHigh(pair,tf,iHighest(pair,tf,MODE_HIGH,ExtDepth,shift));
if (val==lasthigh) val= 0.0 ;
else
{
lasthigh=val;
if ((val-iHigh(pair,tf,shift))>(ExtDeviation* Point )) val= 0.0 ;
else
{
for (back= 1 ; back<=ExtBackstep; back++)
{
res=ExtMapBuffer2[shift+back];
if ((res!= 0 )&&(res<val)) ExtMapBuffer2[shift+back]= 0.0 ;
}
}
}
ExtMapBuffer2[shift]=val;
//-------------------------------------------------------------------//--- Расчитываем буфер BuferDn2if (ExtMapBuffer2[shift]> 0.0 )
{
if (use.narrow.bands) val = MathMax (iClose(pair,tf,shift),iOpen(pair,tf,shift));
else {val = MathMin (iClose(pair,tf,shift),iOpen(pair,tf,shift));
val = MathMax (val, MathMax (iLow(pair,tf,shift- 1 ),iLow(pair,tf,shift+ 1 )));}
if (ExtMapBuffer2[shift+back]== 0.0 ) ExtMapBuffer3[shift+back]= 0.0 ;
}
ExtMapBuffer3[shift]=val;
//-------------------------------------------------------------------
}
// Отсееваем ненужные значения
lasthigh=- 1 ; lasthighpos=- 1 ;
lastlow=- 1 ; lastlowpos=- 1 ;
for (shift=count; shift>= 0 ; shift--)
{
curlow=ExtMapBuffer[shift];
curhigh=ExtMapBuffer2[shift];
if ((curlow== 0 )&&(curhigh== 0 )) continue ;
//---if (curhigh!= 0 )
{
if (lasthigh> 0 )
{
if (lasthigh<curhigh) ExtMapBuffer2[lasthighpos]= 0 ;
else ExtMapBuffer2[shift]= 0 ;
}
//---if (lasthigh<curhigh || lasthigh< 0 )
{
lasthigh=curhigh;
lasthighpos=shift;
}
lastlow=- 1 ;
}
//----if (curlow!= 0 )
{
if (lastlow> 0 )
{
if (lastlow>curlow) ExtMapBuffer[lastlowpos]= 0 ;
else ExtMapBuffer[shift]= 0 ;
}
//---if ((curlow<lastlow)||(lastlow< 0 ))
{
lastlow=curlow;
lastlowpos=shift;
}
lasthigh=- 1 ;
}
}
for (shift=iBars(pair,tf)- 1 ; shift>= 0 ; shift--)
{
if (shift>=count) ExtMapBuffer[shift]= 0.0 ;
else
{
res=ExtMapBuffer2[shift];
if (res!= 0.0 ) ExtMapBuffer2[shift]=res;
}
}
}
IMHO - 주문을 검색하고 시장에서 마감되었는지, 어떻게 마감되었는지, 테이크, 스톱 또는 수동으로 확인하는 것이 좋습니다. 여기에서 다른 방향으로 춤을 춥니다.
그러면 모든 것이 확실히 완벽해질 것입니다. 그리고 전역 변수가 손실 될 수 있습니다 ...
변수를 잃는다는 것이 무엇을 의미하는지 설명해 주시겠습니까? 그리고 고문도 이것을 확인했다는 의미에서 찾을 수 있습니까?
다음 함수를 사용하여 표시기가 던진 지점의 좌표를 얻을 수 있습니다.
WindowXOnDropped()
창YonDropped()
가격 및 시간:
WindowPriceOnDropped()
WindowTimeOnDropped()
담아보도록 하겠습니다. 예는 다음과 같을 것입니다 ...
이상한 상황에 직면했습니다. 제발 말해줘...
세 명의 자필 고문이 있습니다. 전략은 동일하며 도구에 따라 구현이 약간 다를 뿐입니다. 쌍: EURUSD, EURGBP 및 USDJPY. 처음 두 개는 모든 것이 정상이고 마지막 두 개는 거래되지 않습니다. 브로커 - FX-트렌드. 계정은 최소 로트가 0.01인 미니 계정입니다.
동시에: 데모 계정에서는 모든 것이 정상입니다. 테스터의 동일한 실제 계정 으로 테스터에서 시작하면 거래가 열립니다. 그러나 현실에서는 그렇지 않습니다. 주문(및 기타 모든 항목)을 열기 위한 그래픽 마커가 성공적으로 배치되었습니다. 로그에서 - 절대적으로 아무것도 아닙니다.
이 모든 것이 VPS에서 회전합니다.
정보가 이게 전부입니다. 파기 방향에 대한 힌트를 주시면 감사하겠습니다.
다음과 같이 하는 것이 좋습니다(어드바이저를 다시 시작하는 경우).
주문이 하나만 있고 하나가 있으면 주문 없이도 할 수 있습니다.
if( 주문 합계() <1)
{
}
......
나는 실제 및 데모에 대한 모든 어드바이저의 변수에 주문 및 위치에 대한 중요한 데이터를 저장하지 않습니다. EA 로직에 필요한 데이터를 쓸 수 있는 최대치는 주문 코멘트에 있습니다. 포지션이 있는지, 얼마나 있는지, 주문이 있는지, 마감된 포지션이 있는지, 마감된 방법을 찾아야 할 때 시장 포지션/주문 또는 과거 데이터를 순환하면서 필요한 주문을 찾고 필요한 정보를 추출합니다. 따라서 컴퓨터가 예기치 않게 꺼질 때 손실될 수 있으므로 모든 중요한 정보는 변수에 저장되지 않습니다. 나중에 언제든지 꺼낼 수 있습니다. 어떻게 든 터미널의 전역 변수에 저장하려고했습니다. 컴퓨터가 꺼지거나 멈출 때 정보가 항상 거기에 저장되는 것은 아닙니다. 그리고 그곳에 있는 새로운 정보의 기록을 지속적으로 모니터링하는 것은 어쩐지 씁쓸합니다 ... 내가 필요한 순간에 필요한 것을 찾기가 더 쉽습니다.
그렇군요...더불어 안전하게 플레이하세요. 물론 모든 주문을 정렬하는 것이 더 정확합니다. 그러나 여기에 특정한 경우가 있습니다. GlobalVariables가 손실되면 이 DC를 떠나야 합니다.
DC가 일부러 그러는 건가요? MT4는 중개인이 쉽게 조종할 수 있는 단말이라 속임수가 많다고 하는데 누가 들어봤나?
DC가 일부러 그러는 건가요? MT4는 중개인이 쉽게 조종할 수 있는 단말이라 속임수가 많다고 하는데 누가 들어봤나?
정말 이해가 되지 않습니다. 물론, x ...... 구름을 생성하지 않는 한 전역 변수를 파괴하는 요점이 무엇입니까? 문서에서 인용:
"클라이언트 터미널의 전역 변수는 MQL4 프로그램의 전역 수준에서 선언된 변수와 혼동되어서는 안 됩니다. 전역 변수는 마지막 액세스 순간부터 4주 동안 클라이언트 터미널에 존재하며 이후 자동으로 소멸됩니다. 글로벌 변수는 새로운 값을 설정할 뿐만 아니라 글로벌 변수의 값을 읽는 것으로 간주됩니다. 클라이언트 터미널의 글로벌 변수 는 클라이언트 터미널에서 실행되는 모든 MQL4 프로그램에서 동시에 사용 가능합니다. 당신의 돈을 위해 싸워라.
전문가의 도움이 필요합니다!!! 이미 이 코드로 머리가 깨졌습니다... 4개의 버퍼가 있으며 그 중 2개는 올바르게 작동하지만(Buffer &buffer2) 나머지 2개는 작동하지 않습니다. 특정 조건이 발생하면 버퍼가 채워지고 이 값이 초과되면 버퍼가 삭제(0)되지만 나머지 2개의 버퍼는 여전히 차트에 멈춥니다. 그것을 고칠 방법을 말해?