이동 평균 을 기반으로 지표를 만들고 있습니다. 아이디어는 주어진 지점 내에서 사소한 움직임을 차단하는 것입니다. 필터를 50포인트로 설정했다고 가정해 보겠습니다. 지표는 감소하고 있지만 감소는 50포인트 미만이므로 어제 평균값을 취해 기록하고 현재 날짜의 수준을 설정합니다. 다음 막대에서 현재 값에서 기록된 값을 뺀 차이를 확인합니다. 합계가 50포인트 이하이면 현재 값을 정적 변수에 저장된 수준으로 설정합니다. 값을 초과하면 값이 현재가 됩니다. 즉, 오프셋이 0인 이동 평균과 유사합니다.다양한 변형을 시도했지만 아직 올바른 솔루션을 찾지 못했습니다.
인식의 편의를 위해 감소만 그리는 코드를 첨부합니다. 문제는 지표가 성장에 의존한다는 것입니다. 그리고 가장 중요한 것은 테스터에서 실행할 때 필터를 넘어서는 것이 없다는 사실에도 불구하고 표시기가 변경되는 것을 시각적으로 볼 수 있다는 것입니다.기록된 값 "MA_otshet"의 값이 어딘가에서 손실되었다고 가정합니다.
#property indicator_chart_window#property indicator_buffers1#property indicator_color1 Red
//--- input parameters//--- buffersdouble ExtMapBuffer1[];
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init()
{
//---- indicatorsSetIndexStyle ( 0 , DRAW_LINE , 0 , 1 );
SetIndexBuffer ( 0 ,ExtMapBuffer1);
IndicatorDigits ( Digits + 1 );
//----return ( 0 );
}
//+------------------------------------------------------------------+//| Custom indicator deinitialization function |//+------------------------------------------------------------------+int deinit()
{
return ( 0 );
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+int start()
{
int counted_bars= IndicatorCounted (),
limit;
double
raznica,raznica_static,MA_0_t,MA_1_t;
staticdouble MA_otshet; //здесь хранится запись значения MA_otshetfor ( int i= 0 ;i< Bars ;i++)
{
MA_0_t= iMA ( NULL , 0 , 7 , 0 , MODE_EMA , PRICE_CLOSE ,i+ 0 );
MA_1_t= iMA ( NULL , 0 , 7 , 0 , MODE_EMA , PRICE_CLOSE ,i+ 1 );
raznica=MA_0_t-MA_1_t; //разница между сегодня и вчера по скользящей средней
raznica_static=MA_0_t-MA_otshet; //разница между сегодня и MA_otshetif (raznica > - 0.005 && raznica <= 0 ) // если raznica не превышает заданное число
{
MA_otshet=MA_1_t; // записываем значение MA_otshet
}
if (raznica_static > - 0.005 && raznica_static <= 0 ) //если raznica_static не превышает заданное число
{
ExtMapBuffer1[i]=MA_otshet; // то рисуем значение индикатора, как записанный MA_otshet
}
if (raznica_static < - 0.005 ) // если raznica превышает заданное число
{
ExtMapBuffer1[i]=MA_0_t; // то рисуем значение по текущей цене
}
}
return ( 0 );
}
//+------------------------------------------------------------------+
모든 주문은 2355에 마감되어야 하고 금요일 거래는 2200에 끝나야 거래가 정체됩니다.
시간 섹션의 교과서에서 스크립트를 찾았습니다. 도와주세요. 그날의 매개변수 번호를 추가하세요. 즉, 주문이 금요일 2155시에 마감되고 평일에는 2355시에 마감되도록 하거나 링크를 공유할 수 있는 경우 링크를 공유할 수 있습니다. 기성 솔루션
//--------------------------------------------------------------------// timeevents.mq4// Предназначен для использования в качестве примера в учебнике MQL4.//--------------------------------------------------------------- 1 --externdoubleTime_Cls=16.10; // Время закрытия ордеровboolFlag_Time=false; // Флаг, сообщения ещё не было //--------------------------------------------------------------- 2 --intstart()// Спец. функция start{intCur_Hour=Hour(); // Серверное время в часахdoubleCur_Min =Minute(); // Серверное время в минутахdoubleCur_time=Cur_Hour + Cur_Min100; // Текущее времяAlert(Cur_time);
if(Cur_time>=Time_Cls)// Если наступило время событияExecutor(); //.. то выполняем задуманноеreturn; // Выход из start()}//--------------------------------------------------------------- 3 --intExecutor()// Пользовательская функция{if(Flag_Time==false)// Если ещё не было сообщения..{// .. то сообщаем (1 раз)Alert("Время важных новостей. Закройте ордера.");
Flag_Time=true; // Теперь сообщение уже было}return; // Выход из польз. функции}
아이 질문이 있습니다. 변수는 코드 헤더에 선언됩니다. 이론적으로 그들은 글로벌합니다. 근데 뭐가 다른지 이해가 안감
~에서
, 이 변수가 코드 헤더에 선언된 경우. 이론상 변수의 범위. 그러나 두 경우 모두 함수 내부에서 볼 수 있습니다. 테스트(스크립트):
- 별 차이를 못 느꼈습니다. 그들의 차이점을 설명할 수 있습니까? 그렇지 않으면 나는 그것을 이해하지 못합니다.
함수 내에서 static을 선언하는 것이 합리적입니다. 범위는 기능 블록일 뿐입니다.
같은 방식으로 작동합니다.
어떤 경우에 차이가 느껴지나요? ALXIMIKS , 답변도 감사합니다.
안녕하세요!
iPhone/ipad에 설치된 mt4에 추가 표시기/로봇을 설치하는 방법을 알려주십시오. 원칙적으로 이것이 가능한가요? Windows에서는 모든 것이 기본적으로 간단하지만 Apple 의 모바일 제품에서는 모든 것이 그렇게 명확하지 않습니다.
가능하다는 논리입니다. 결국 많은 표시기가 이미 사전 설치되어 있습니다. 그러나 파일 구조가 다르기 때문에 무엇을 어디에 복사해야 하는지 명확하지 않습니다. 아무도 그런 문제에 직면하지 않았습니까?
미리 감사드립니다.
이동 평균 을 기반으로 지표를 만들고 있습니다. 아이디어는 주어진 지점 내에서 사소한 움직임을 차단하는 것입니다. 필터를 50포인트로 설정했다고 가정해 보겠습니다. 지표는 감소하고 있지만 감소는 50포인트 미만이므로 어제 평균값을 취해 기록하고 현재 날짜의 수준을 설정합니다. 다음 막대에서 현재 값에서 기록된 값을 뺀 차이를 확인합니다. 합계가 50포인트 이하이면 현재 값을 정적 변수에 저장된 수준으로 설정합니다. 값을 초과하면 값이 현재가 됩니다. 즉, 오프셋이 0인 이동 평균과 유사합니다. 다양한 변형을 시도했지만 아직 올바른 솔루션을 찾지 못했습니다.
인식의 편의를 위해 감소만 그리는 코드를 첨부합니다. 문제는 지표가 성장에 의존한다는 것입니다. 그리고 가장 중요한 것은 테스터에서 실행할 때 필터를 넘어서는 것이 없다는 사실에도 불구하고 표시기가 변경되는 것을 시각적으로 볼 수 있다는 것입니다. 기록된 값 "MA_otshet"의 값이 어딘가에서 손실되었다고 가정합니다.
좋은 오후에요. 도와주세요, 제발.
모든 주문은 2355에 마감되어야 하고 금요일 거래는 2200에 끝나야 거래가 정체됩니다.
시간 섹션의 교과서에서 스크립트를 찾았습니다. 도와주세요. 그날의 매개변수 번호를 추가하세요. 즉, 주문이 금요일 2155시에 마감되고 평일에는 2355시에 마감되도록 하거나 링크를 공유할 수 있는 경우 링크를 공유할 수 있습니다. 기성 솔루션
//------------------------------------------------ --------------- 4 --
용이하게!!!
고마워. 하지만 말하지 마세요. 1일만 있으면 됩니다. 즉, 마지막 근무일의 이익에 대한 정보를 표시합니다.
변수가 선언됩니다. 작동하지 않습니다. 모두 0입니다.
for (p=0; p<OrdersHistoryTotal(); p++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (StrToTime(TimeToStr(TimeCurrent(), TIME_DATE))<OrderCloseTime() && (OrderType()==OP_BUY || OrderType()==OP_SELL) )
p0+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
double r0=p0*100/AccountBalance();
고마워. 하지만 말하지 마세요. 1일만 있으면 됩니다. 즉, 마지막 근무일의 이익에 대한 정보를 표시합니다.
변수가 선언됩니다. 작동하지 않습니다. 모두 0입니다.
for (p=0; p<OrdersHistoryTotal(); p++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (StrToTime(TimeToStr(TimeCurrent(), TIME_DATE))<OrderCloseTime() && (OrderType()==OP_BUY || OrderType()==OP_SELL) )
p0+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
double r0=p0*100/AccountBalance();
원리는 이해하기 어렵지 않습니다. 현재 날짜의 이익/손실을 계산하려면 fCalculate_Pribul(-2, iTime(Symbol(), PERIOD_D1, 0), "") 값을 전달해야 합니다.
좋은 오후에요. 도와주세요, 제발.
모든 주문은 2355에 마감되어야 하고 금요일 거래는 2200에 끝나야 거래가 정체됩니다.
시간 섹션의 교과서에서 스크립트를 찾았습니다. 도와주세요. 그날의 매개변수 번호를 추가하세요. 즉, 주문이 금요일 2155시에 마감되고 평일에는 2355시에 마감되도록 하거나 링크를 공유할 수 있는 경우 링크를 공유할 수 있습니다. 기성 솔루션
//------------------------------------------------ --------------- 4 --
즉석에서 코드는 물론 무릎에 작성되지만 작동해야 합니다. 최소한 알아낼 수는 있습니다.
이 부분에서 선 굵기는 어디에 표시되어 있습니까? 부끄럽기까지 했다. :(