[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 830

 
gince :
이것은 Moving Average.mq4에서 가져온 것입니다.
거기에는 그러한 줄이 없었습니다)) 한 번은 고문의 코드를 직접 변경했을 것입니다. 이제는이 기록에 따라 안내됩니다)
 
Techno :
거기에는 그러한 줄이 없었습니다)) 한 번은 고문의 코드를 직접 변경했을 것입니다. 이제는이 기록에 따라 안내됩니다)


죄송합니다. 아마도 그렇게 두지 않았을 것입니다. Moving Average.mq4를 기반으로 일부 변경했습니다.

나는 러시아인이 아니며 때때로 내가 원하는 것을 설명하기가 어렵습니다.

 
gince :


나는 러시아인이 아니며 때때로 내가 원하는 것을 설명하기가 어렵습니다.

그러나 원하는 것을 설명하기 전까지는 도와주기가 어렵습니다.
 
abolk :
그러나 원하는 것을 설명하기 전까지는 도와주기가 어렵습니다.


두 가지 신호가 있습니다

double tr0=iCustom(NULL,0,"trd",0,0);//0 또는 1일 수 있습니다. 1개 구매하면
double tr1=iCustom(NULL,0,"trd",1,0);//0 또는 1일 수 있습니다. 1이면 판매합니다

판매에 대해 이야기하겠습니다

다음 틱 후에 tr1이 1이 되면 단위 t가 나타난 시간부터 이 단위가 시간 간격 tim 동안 t 순간부터 지속되는지 여부를 확인하기 시작합니다. 확인은 델타 시간 간격으로 수행됩니다. 예를 들어, t=........ //10.00시, tim = 600초, delta=60초라고 가정합니다. 따라서 10.00에 tr1=1이 나타납니다(0이 되기 전). 그러나 우리는 팔지 않을 것입니다. 이 시그널이 600초 동안, 즉 오전 10시 10분까지 유지되면 판매가 확정됩니다. 검사는 지속적으로 수행되지 않고 정점 델타 = 60초(10.00, 10.01, 10.02, ....... , 10.09, 10.10)의 세그먼트를 통해 수행됩니다. 그리고 각 검사에서 tr1=1이면 매도 신호를 보냅니다.

여기에 마이너스가 있습니다. 검사 사이에 0이 나타날 수 있으며 신호가 잘못될 수 있습니다. 검사는 자주 할 수 있지만 컴퓨터는 매우 로드됩니다. 이것에서 당신은 중간 지점을 찾고 무슨 일이 일어나는지 볼 필요가 있습니다. 이것이 실험의 전부입니다.


 
gince :


두 가지 신호가 있습니다

double tr0=iCustom(NULL,0,"trd",0,0);//0 또는 1일 수 있습니다. 1개 구매하면
double tr1=iCustom(NULL,0,"trd",1,0);//0 또는 1일 수 있습니다. 1이면 판매합니다


한 시점에 두 개의 서로 다른(모순적인) 신호가 도착할 수 있다는 것은 분명하지 않습니다.

 
abolk :

한 시점에 두 개의 서로 다른(모순적인) 신호가 도착할 수 있다는 것은 분명하지 않습니다.


아니, 그는 할 수 없습니다. 그것들은 다른 버퍼에서 가져오며 그 중 하나만 유닛을 수신할 수 있습니다. 가능한 조합

TR0 0 1 0

TR1 0 0 1

1과 1 불가능한 조합

 
void init()
{
  isSign= false ;
}

void start() // запускается с каждым тиком
{
   if (!isSign) // если сигнала нет
   {
      sign0=???; // формула определения sign
       if (sign0== 1 ) // если сигнал поступил
      {
         t0=TimeCurrent(); //фиксируем время
         isSign= true ; // переключатель - сигнал поступил
      }
   }
   if (isSign) // если сигнал есть
   {
      t=TimeCurrent(); // новое время
       if (t<=t0+delta) // если временной промежуток не закончился
      {
         sign1=???; //формула определения нового сигнала
         if (sign1!=sign0) // если новый сигнал изменился (не продержался)
         {
            isSign= false ; // переключатель - сигнала нет
         }
      }
       if (t>t0+delta) // если промежуток закончился
      {
         if (isSign) // если сигнал удержался
         {
             //действия по сигналу
         }
      }
   }
}

이산 간격이 아닌 모든 틱 확인

제가 실수를 했을 수도 있어요 - 죄송합니다.

 
gince :


아니, 그는 할 수 없습니다. 그것들은 다른 버퍼에서 가져오며 그 중 하나만 유닛을 수신할 수 있습니다. 가능한 조합

TR0 0 1 0

TR1 0 0 1

1과 1 불가능한 조합

수신 신호 == 1.

베이 타이머를 켭니다.

신호가 도착한 경우 ==1. 타이머를 만지지 마십시오.

신호가 도착한 경우 == -1 매수 타이머를 재설정하고 매도 타이머를 활성화합니다.

신호가 도착한 경우 == -1. 마을 타이머를 만지지 마십시오.

신호가 0이면 두 타이머를 모두 0으로 재설정합니다.

타이머가 5분을 카운트다운했는데, 이는 우리가 작업 중임을 의미합니다.

 
neama :


sig_bay 신호가 도착했습니다 == 1. 0이면 타이머가 시작되지 않습니다
베이 타이머를 켭니다.
신호가 도착한 경우 ==1. 타이머를 만지지 마십시오.
신호 sig_buy == 0이면 구매 타이머를 재설정합니다.

타이머는 간격으로 5분을 카운트다운했습니다. 1분, 두 번이라고 가정해 보겠습니다. 이는 기본적으로 작업 중임을 의미합니다.

신호 sig_set == 1. 0이면 타이머가 시작되지 않습니다.
타이머를 켭니다.
신호 sig_set==1인 경우. 타이머를 만지지 마십시오.
신호 sig_sel == 0이면 타이머를 재설정하십시오.
타이머는 간격으로 5분을 카운트다운했습니다. 1분을 두 번이라고 가정해 보겠습니다. 이는 우리가 마을에서 일하고 있음을 의미합니다.



 
abolk :

불연속적인 간격이 아닌 모든 틱 확인

제가 실수를 했을 수도 있어요 - 죄송합니다.


모든 틱은 좋지 않다