차트의 시간을 기반으로 통화의 강도를 표시하도록 통화 강도 측정기를 수정하는 중입니다. 현재 사용되는 코드는 다음과 같습니다.
aHigh = MarketInfo(mySymbol,MODE_HIGH); // set a high today
aLow = MarketInfo(mySymbol,MODE_LOW); // set a low today
aBid = MarketInfo(mySymbol,MODE_BID); // set a last bid
aAsk = MarketInfo(mySymbol,MODE_ASK);
MODE_HIGH 및 MODE_LOW가 현재의 최고점과 최저점을 이해합니다. 대신 차트 현재 시간 프레임의 최고점과 최저점을 어떻게 얻을 수 있습니까?
감사해요!
추신 : 저는 프로그래머가 아니므로 작은 단어를 사용하십시오 :)
MarketInfo()를 사용할 필요가 없습니다. 현재 High를 얻으려면 High[0]과 Low[n], Close[n], Open[n]을 사용하십시오. 'n'은 현재 막대로부터의 오프셋을 나타냅니다. 예를 들어 전류 이전 막대의 높음을 얻으려면 전류가 0이고 이전 막대가 전류에서 오프셋 1이므로 High[1]을 사용할 수 있습니다.
차트에서 보고 있는 것 이외의 다른 시간대의 고가, 저가, 시가, 종가를 확인하려면 iHigh(), iLow(), iClose() 및 iOpen 함수 를 사용할 수 있습니다.
아래 샘플 사용법.
이중 high_of_gbpusd_4hours_current = iHigh("gbpusd", period_h4, 0);
모두들 안녕,
차트의 시간을 기반으로 통화의 강도를 표시하도록 통화 강도 측정기를 수정하는 중입니다. 현재 사용되는 코드는 다음과 같습니다.
aLow = MarketInfo(mySymbol,MODE_LOW); // set a low today
aBid = MarketInfo(mySymbol,MODE_BID); // set a last bid
aAsk = MarketInfo(mySymbol,MODE_ASK);MODE_HIGH 및 MODE_LOW가 현재의 최고점과 최저점을 이해합니다. 대신 차트 현재 시간 프레임의 최고점과 최저점을 어떻게 얻을 수 있습니까?
감사해요!
추신 : 저는 프로그래머가 아니므로 작은 단어를 사용하십시오 :)MarketInfo()를 사용할 필요가 없습니다. 현재 High를 얻으려면 High[0]과 Low[n], Close[n], Open[n]을 사용하십시오. 'n'은 현재 막대로부터의 오프셋을 나타냅니다. 예를 들어 전류 이전 막대의 높음을 얻으려면 전류가 0이고 이전 막대가 전류에서 오프셋 1이므로 High[1]을 사용할 수 있습니다.
차트에서 보고 있는 것 이외의 다른 시간대의 고가, 저가, 시가, 종가를 확인하려면 iHigh(), iLow(), iClose() 및 iOpen 함수 를 사용할 수 있습니다.
아래 샘플 사용법.
이중 high_of_gbpusd_4hours_current = iHigh("gbpusd", period_h4, 0);
감사해요! 너희들 락!
나는 그것이 거의 작동한다고 생각하지만 (확실하지 않습니까?) 어떤 이유로 배열은 합법적 인 값과 함께 많은 '0'값으로 채워집니다.
이것이 내가 할 방법입니다.
#define TICKET 0
#define PRICES 1
double ResumeArray[0,2];
int CheckForResume()
{
ResumeCheck = TimeLocal()+(PERIOD_M1*60)*5;
bool success = false;
int k;
for (int i = 0; i<OrdersTotal();i++)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))continue;
if (OrderType() > OP_SELL || OrderProfit()> Cutoff)continue;
int arraycount=ArrayRange(ResumeArray,TICKET);
bool found = false;
for (k=arraycount-1; k>=0; k--)
{
if (ResumeArray[k,TICKET] == OrderTicket())
{
found = true;
if (ResumeArray[k,PRICES] + Cutoff < OrderProfit())break;
else
{
success=true;
Print ("ELSE");
ResumeArray[k,PRICES] = OrderProfit();
break;
}
}
}
if (found == false)
{
arraycount = ArrayResize(ResumeArray,arraycount+1)/2;
ResumeArray[arraycount-1,TICKET] = OrderTicket();
ResumeArray[arraycount-1,PRICES] = OrderProfit();
success=true;
}
}
if(success)return (1);
else return(0);
}
TICKET 및 PRICES 정의를 사용할 필요가 없습니다. 2차원 배열이 작동하는 방식을 보여주기 위해 포함시켰습니다. TICKET 및 PRICES의 모든 발생을 각각 0과 1로 바꾸십시오.
'for' 루프의 'return' 명령을 'break'로 바꿨으므로 모든 미결 주문이 처리됩니다.
한 가지 주의할 점은 마감된 주문은 어레이에서 제거 되지 않으므로 계속해서 크기가 커지고 플랫폼 속도가 느려진다는 것입니다.
d4v3
막대 기록 제한
누군가가 이 RenkoLiveChart_v3.2 스크립트에 막대 제한 옵션을 추가할 수 있다면 매우 감사하겠습니다.
컴퓨터 리소스 가 너무 많이 필요합니다.
기본 알림 EA
..............[해결] ..............
소음 감소
안녕 모두 - 나는 거래에서 소음을 제한하고 더 빠른 컷오프를 만드는 방법을 찾고 있습니다
아이디어는 사실 아주 간단합니다
노이즈는 이 사진에 표시되어 있습니다. 그 동적 의미는 시장 상황에 맞게 계속 변경됩니다.
누군가가 그것을 자유롭게 사용하고 싶다면 여기에 몇 가지 승수를 넣으면 됩니다.
int Trades = ScanTrades(0,0);
if (거래 == 0) TS1 = 0;
if ((ScanTrades(2,0) > 0) && (이익 < 0)) TS= ((MarketInfo(Symbol(),MODE_BID)) + 노이즈 + 미끄러짐);
if ((ScanTrades(2,0) > 0) && (이익 > 0)) TS= ((MarketInfo(Symbol(),MODE_BID)) + 노이즈 );
if ((ScanTrades(1,0) > 0) && (이익 < 0)) TS= ((MarketInfo(Symbol(),MODE_BID)) - 노이즈 - 미끄러짐);
if ((ScanTrades(1,0) > 0) && (이익 > 0)) TS= ((MarketInfo(Symbol(),MODE_BID)) - 노이즈 );
//짧은
if ((ScanTrades(2,0) > 0)&& (TS1 ==0 )) TS1 = TS;
if ((ScanTrades(2,0) > 0)&& (TS < TS1)) TS1 = TS;
if ((ScanTrades(2,0) > 0) && (MarketInfo(Symbol(),MODE_BID) > TS1)) CloseOrder(2);
//긴
if ((ScanTrades(1,0) > 0)&& (TS1 ==0 )) TS1 = TS;
if ((ScanTrades(1,0) > 0)&& (TS > TS1)) TS1 = TS;
if ((ScanTrades(1,0) > 0) && (MarketInfo(Symbol(),MODE_BID) < TS1)) CloseOrder(1);
막대 차트에서 현재 및 이전 고가 및 저가를 얻는 가장 좋은 방법은 무엇입니까? "noise" 변수를 생성해야 합니다.
나는 이것을 시도했지만 그것의 적중과 미스 t1과 l1은 언젠가 0이 가장 우울합니다. 그런 일이 있다면 전체 ea가 "완료"되는 것 사이에 서 있는 모든 것입니다.
이중 ll2=낮음;
이중 hh3=높음;
이중 ll3=낮음;
이중 t1,l1, 노이즈;
//noise = 이전 막대의 겹침
if ((hh2 - hh3) > 0 ) t1 =(hh3); //기본적으로 둘 사이에서 가장 낮은 "높은" 막대를 선택합니다.
if ((hh3- hh2) > 0 ) t1=(hh2); //약세
if ((ll2 - ll3) > 0 ) l1 =(ll2); // 가장 높은 낮은 막대 강세 선택
if ((ll3-ll2) > 0 ) l1=(ll3); //약세
노이즈 =(t1-l1);
Print("t1 = ",t1,"; l1 = ",l1);인쇄의 일반적인 결과는 t1=0 l1=94.3입니다. 가장 짜증나는 것은 hh2와 hh3이 ==이기 때문입니다. 무엇을 해야할지 모르겠어서 내 코드에 문제가 있는 것뿐입니다.
누가 날 도울 수 있죠 ?
누군가 3개의 친숙한 지표를 기반으로 하는 새로운 지표를 만드는 방법을 알려줄 수 있습니까? 나는 매우 강한 매수/매도 신호 를 보여주는 3개의 지표를 기반으로 전략을 세우지만 1개의 지표를 만들고 싶습니다...
수정 부탁드립니다
이 ea에 다음 변경 사항을 구현하도록 도와주세요.
1) 시간에 추가
A) fisher_ 33,0.5,0.5 설정이 있는 11 표시기
B) tcf 평활 표시기 설정 17, 8, 0.7
c) 또한 dinap _basic 표시기가 신호 방향에 대해 그려졌을 때 거래를 허용하지 않기를 원합니다. 즉, 상승하면 매수 신호 입력이 허용되지 않고 하락하면 매도 신호 입력이 허용되지 않습니다.
2) 15분 안에 추가
A) 슈퍼트렌드 지표
B) 트렌드로드 지표
자금 관리
1) 계정 총계의 3% 손절매(1.5%)로 2개 거래를 엽니다.
2) 80핍에서 하나는 이익을 얻 거나 2.2%이고 두 번째는 3.8%에서 이익을 얻습니다.
3) 4연패 후 5번째 거래의 경우 로트 크기를 두 배로 늘리고 연속 2승까지 연속 로트를 늘리고 기본 로트 크기로 되돌립니다.
4) 12pips의 트레일링 스톱(모든 거래에 대한 이전 양초 atrstops_v1 표시기의 매도 및 매수의 경우 위).
그게 다야 도와주세요
한 줄의 코드로 정확히 동일한 결과를 얻을 수 있었습니다.
GlobalVariableSet("TRENDSET_"+Symbol());
시간 프레임을 추가하여 더욱 독특하게 만들 수도 있습니다.
귀하의 게시물의 요점이 정직한 것인지 확실하지 않습니다.
문안 인사
럭스
iCustom을 사용하여 H1에서 값을 호출하는 방법은 무엇입니까?
여보세요,
아주 간단한 지표를 코딩하려고 하는데 H1에서 Laguerre 값을 호출할 수 없습니다.
내가 하고 싶은 것:
1백만 TF 사용
매수 신호: Laguerre 교차 0.15 레벨 상향 및 Laguerre H1 > 0.75
매도 신호 : Laguerre 교차 0.75 레벨 하향 및 Laguerre H1 < 0.15
나는 간단한 십자가에 대한 지표를 만들었고 작동합니다. 문제는 Laguerre H1에서 값을 확인하려고 할 때입니다. 엉망입니다!
나는 2가지 방법을 시도했다:
첫 번째:
#property indicator_buffers 2
#property indicator_color1 SeaGreen
#property indicator_color2 Red
#property indicator_width1 3
#property indicator_width2 3
double CrossUp[];
double CrossDown[];
extern bool SoundON=true;
double alertTag;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0, DRAW_ARROW, EMPTY,3);
SetIndexArrow(0, 233);
SetIndexBuffer(0, CrossUp);
SetIndexStyle(1, DRAW_ARROW, EMPTY,3);
SetIndexArrow(1, 234);
SetIndexBuffer(1, CrossDown);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start() {
int limit, i;
int counted_bars=IndicatorCounted();
//---- check for possible errors
if(counted_bars<0) return(-1);
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for(i = 0; i <= limit; i++) {
if ( (iCustom(NULL,0,"Laguerre",0.66,9500,0,i) > 0.15) && (iCustom(NULL,0,"Laguerre",0.66,9500,0,i+1) < 0.15)
&& (iCustom(Symbol(),PERIOD_H1,"Laguerre",0.66,9500,0,i) > 0.75) ) //check for buy signal
{
CrossUp = Close;
}
else if ( (iCustom(NULL,0,"Laguerre",0.66,9500,0,i) 0.75)
&& (iCustom(Symbol(),PERIOD_H1,"Laguerre",0.66,9500,0,i) < 0.15) ) //check for sell signal
{
CrossDown = Close;
}
if (SoundON==true && i==1 && CrossUp > CrossDown && alertTag!=Time[0]){
Alert("SHORT signal on ",Symbol()," ",Period());
alertTag = Time[0];
}
if (SoundON==true && i==1 && CrossUp < CrossDown && alertTag!=Time[0]){
Alert("Long Signal on ",Symbol()," ",Period());
alertTag = Time[0];
}
}
return(0);
}[/CODE]
second one:
[CODE]//+------------------------------------------------------------------+
//| Shift.mq4 |
//| me |
//|
//+------------------------------------------------------------------+
#property copyright "me"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_width1 4
#property indicator_width2 4
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
bool Fact_Up = true; // Fact of report that market..
bool Fact_Dn = true; //..is bullish or bearish
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,241);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexEmptyValue(0,0.0);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,242);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexEmptyValue(1,0.0);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
if(counted_bars<0) return(-1);
//limit=Bars-counted_bars;
//----
double MA; // MA value on 0 bar
double MA2;
double MA3;
double MA4;
//--------------------------------------------------------------------
double value1, value2, value3;
for (int i=Bars-1;i>=0;i--)
//---- main loop
//for(int i=0; i<limit; i++)
{value1=0.0;
value2=0.0;
value3=0.0;
//--------------------------------------------------------------------
// Checking if bullish
if( (iCustom(Symbol(),NULL,"Laguerre",0,i) > 0.15) && (iCustom(Symbol(),NULL,"Laguerre",0,i+1) < 0.15) && Fact_Up == true
&& (iCustom(Symbol(),PERIOD_H1,"Laguerre",0,i) > 0.75) )
{
Fact_Dn = true; // Report about bullish market
Fact_Up = false; // Don't report bullish market
// Alert("BUY SIGNAL.");
value1=Open;
}
//--------------------------------------------------------------------
// Checking if bearish
if( (iCustom(Symbol(),NULL,"Laguerre",0,i) 0.75) && Fact_Dn == true
&& (iCustom(Symbol(),PERIOD_H1,"Laguerre",0,i) < 0.15) )
{
Fact_Up = true; // Report about bearish market
Fact_Dn = false; // Don't report bearish market
// Alert("SELL SIGNAL.");
value2=Open;
}
ExtMapBuffer1=value1;
ExtMapBuffer2=value2;
}
//----
return(0);
}
//+------------------------------------------------------------------+둘 다 작동하지 않으면 RED 라인이 문제이며 RED 라인이 없으면 완벽하게 작동합니다 .
나는 시도했다 (iCustom(Symbol(),PERIOD_H1,"Laguerre",0, i ) < .....)
(iCustom(Symbol(),PERIOD_H1,"라게르",0, 0 ) < ....)
(iCustom(Symbol(),60,"라게르",0, i ) < ....)
(iCustom(Symbol(),60,"라게르",0, 0 ) < .....)
변수로도 시도했습니다. (iCustom(Symbol(),PERIOD_H1,"Laguer re", 0.66,9500 ,0,i)
내가 넣으면 :
Print(iCustom(Symbol(),60,"라게르 ",0, i )); "if"앞에 난수를 반환합니다 ...
하지만 다음과 함께: Print(iCustom(Symbol(),60,"Laguerre ",0, 0 )); H1에서 좋은 값을 반환합니다.
이제 iCustom (Symbol(),60,"Laguerre",0, 0 )을 사용하면 문제가 동일하게 유지됩니다. "만약"내부에서 작동하지 않습니다 ...
문제는 "for" 및 "i"와 iCustom "shift" 값에 있지만 알아낼 수 없습니다.
당신의 도움은 매우 환영받을 것입니다!
시도해보고 싶다면 사용하는 Laguerre 지표를 첨부했습니다.
누군가가 처음부터 다시 코딩할 준비가 되었으면 주저하지 마십시오.
나를 미치게 해...