mladen: 그렇다면 왜 후행 정지를 사용하지 않습니까? 내 말은 원래 아이디어가 거의 100%(거의) 수행되며 코딩하기가 훨씬 더 쉽습니다.
문제는 (나는 그것을 올바르게 표현했다고 생각하지 않거나 100% 정확하지 않다고 생각합니다) 스톱(지금은 어쨌든)이 전체 거래에서 동일하게 유지될 것입니다. 이와 같은 접근 방식은 어떻습니까? 두 개의 거래가 열렸을 때 코드는 열린 주문 수를 확인할 수 있습니다. 1(기본적으로 2)보다 높으면 두 거래 모두 이전보다 높은 특정 금액으로 이익을 얻 도록 수정됩니다. 기본적으로 일종의 헤징이 여기에서 진행됩니다.
[langtitle=pl]Proszę o pomoc w napisaniu EA działającego n[/langtitle]
[lang=pl]Witam czy bugł ktoś mi to dopracować był rym wdzięczny : Chciałbym rzeby kupywał LevelRSIbuy=20; sprzeawał jak dojdzie LevelRSIsell=80; i żeby dało się ustawiać pozostałe żeczy kt�re są pod extern int MagicNumber
저는 프로그래밍이 처음이고 MQL4에 대한 도움이 필요합니다. 나는 몇 가지 코더 가이드를 공부했고 내 거래 전략에 따라 거래를 열고 닫는 방법을 알아냈습니다. 내 어려움은 일일 거래 수를 1로 제한하는 것입니다. 하루에 1 거래 이상을 열고 싶지 않습니다(서버 시간에 따라). 그래서 오늘 주문이 열렸는지 확인하기 위해 열린 주문과 닫은 주문을 확인 하고 싶습니다. 오늘 주문이 열리면 그날 추가 주문을 열지 마십시오.
if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() != MagicNumber) continue;
if (OrderOpenTime()endTime) continue;
return(false);
}
return(true);
}
현재 심볼에 대해 마감된 주문 중 현재 날짜에 열린 주문이 있는지 확인합니다. 현재 날짜에 열린 주문이 있으면 false를 반환합니다(그 날에 이미 열린 주문이 있음). 그렇지 않으면 true를 반환합니다(당일에 열린 주문이 없음). 1개 이상의 열린 주문을 원하지 않고 다르게 확인되기 때문에 현재 열린 주문(내역만)을 확인하지 않습니다. 사용법은 다음과 같습니다.
PPS: 최대 daiy 시간 프레임에서 작동합니다. 주간 및 월간 차트에서 제대로 작동하지 않습니다.
dresolo1: 저는 프로그래밍이 처음이고 MQL4에 대한 도움이 필요합니다. 나는 몇 가지 코더 가이드를 공부했고 내 거래 전략에 따라 거래를 열고 닫는 방법을 알아냈습니다. 내 어려움은 일일 거래 수를 1로 제한하는 것입니다. 하루에 1 거래 이상을 열고 싶지 않습니다(서버 시간에 따라). 그래서 오늘 주문이 열렸는지 확인하기 위해 열린 주문과 닫은 주문을 확인하고 싶습니다. 오늘 주문이 열리면 그날 추가 주문을 열지 마십시오. 도와주세요.
mql4에서 새로 시작하고 있습니다. 다음 지표와 함께 촛대에서 흑백 망치를 선택하려고합니다. 그러나 차트에서 때때로 촛대가 잘못된 식별 텍스트를 얻습니다(흰색 망치 양초는 검은 망치 양초로 식별되고 그 반대의 경우도 마찬가지입니다). 이 상황을 도와주세요. 미리 감사드립니다.
mql4에서 새로 시작하고 있습니다. 다음 지표와 함께 촛대에서 흑백 망치를 선택하려고합니다. 그러나 차트에서 때때로 촛대가 잘못된 식별 텍스트를 얻습니다(흰색 망치 양초는 검은 망치 양초로 식별되고 그 반대의 경우도 마찬가지입니다). 이 상황을 도와주세요. 미리 감사드립니다.
마지막 촛불 세부 사항
안녕,
마지막 촛불의 고가, 저가, 시가 및 종가를 표시하는 지표가 필요합니다...
그렇다면 왜 후행 정지를 사용하지 않습니까? 내 말은 원래 아이디어가 거의 100%(거의) 수행되며 코딩하기가 훨씬 더 쉽습니다.
문제는 (나는 그것을 올바르게 표현했다고 생각하지 않거나 100% 정확하지 않다고 생각합니다) 스톱(지금은 어쨌든)이 전체 거래에서 동일하게 유지될 것입니다. 이와 같은 접근 방식은 어떻습니까? 두 개의 거래가 열렸을 때 코드는 열린 주문 수를 확인할 수 있습니다. 1(기본적으로 2)보다 높으면 두 거래 모두 이전보다 높은 특정 금액으로 이익을 얻 도록 수정됩니다. 기본적으로 일종의 헤징이 여기에서 진행됩니다.
감사해요,
매드맥스3
[langtitle=pl]Proszę o pomoc w napisaniu EA działającego n[/langtitle]
[lang=pl]Witam czy bugł ktoś mi to dopracować był rym wdzięczny : Chciałbym rzeby kupywał LevelRSIbuy=20; sprzeawał jak dojdzie LevelRSIsell=80; i żeby dało się ustawiać pozostałe żeczy kt�re są pod extern int MagicNumber
#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
#property copyright "Expert Advisor Builder"
#속성 링크 "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"
외부 정수 MagicNumber = 0;
extern bool SignalMail = 거짓;
extern bool EachTickMode = True;
extern 이중 로트 = 0.1;
extern int 미끄러짐 = 1;
extern bool UseStopLoss = True;
extern int 손절매 = 10;
extern bool UseTakeProfit = True;
외부 정수 TakeProfit = 5;
extern bool UseTrailingStop = False;
extern int TrailingStop = 30;
extern int LevelRSIbuy=20;
외부 정수 LevelRSIsell=80;
int BarCount;
정수 현재;
bool TickCheck = 거짓;
//+----------------------------------------------- -------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- -------------------+
정수 초기화() {
BarCount = 막대;
if (EachTickMode) 현재 = 0; 그렇지 않으면 현재 = 1;
리턴(0);
}
//+----------------------------------------------- -------------------+
//| 전문가 초기화 해제 기능 |
//+----------------------------------------------- -------------------+
정수 초기화() {
리턴(0);
}
//+----------------------------------------------- -------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- -------------------+
정수 시작() {
정수 주문 = SIGNAL_NONE;
int 합계, 티켓;
이중 StopLossLevel, TakeProfitLevel;
if (EachTickMode && Bars != BarCount) TickCheck = False;
총계 = OrdersTotal();
주문 = SIGNAL_NONE;
//+----------------------------------------------- -------------------+
//| 변수 시작 |
//+----------------------------------------------- -------------------+
이중 Var1 = iRSI("EURUSD", PERIOD_M1, 14, PRICE_OPEN, 현재 + 0);
이중 구매1_1 = iRSI("EURUSD", PERIOD_M1, 14, PRICE_OPEN, 현재 + 0);
이중 Sell1_1 = iRSI("EURUSD", PERIOD_M1, 14, PRICE_OPEN, 현재 + 0);
//+----------------------------------------------- -------------------+
//| 변수 끝 |
//+----------------------------------------------- -------------------+
//위치 확인
bool IsTrade = 거짓;
for (int i = 0, i < 총계, i ++) {
주문 선택(i, SELECT_BY_POS, MODE_TRADES);
if(주문 유형() <= OP_SELL && 주문 기호() == 기호()) {
IsTrade = 사실;
if(주문 유형() == OP_BUY) {
//닫다
//+----------------------------------------------- -------------------+
//| 시그널 비긴(Exit Buy) |
//+----------------------------------------------- -------------------+
//+----------------------------------------------- -------------------+
//| 시그널 종료(Exit Buy) |
//+----------------------------------------------- -------------------+
if (주문 == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (막대 != BarCount))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[신호 경고]", "[" + Symbol() + "] " + DoubleToStr(입찰가, 숫자) + " 매수 종료");
if (!EachTickMode) BarCount = 막대;
IsTrade = 거짓;
계속하다;
}
//후행 정지
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > 포인트 * TrailingStop) {
if(OrderStopLoss() < 입찰 - 포인트 * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), 입찰 - 포인트 * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = 막대;
계속하다;
}
}
}
} 또 다른 {
//닫다
//+----------------------------------------------- -------------------+
//| 시그널 비긴(Exit Sell) |
//+----------------------------------------------- -------------------+
//+----------------------------------------------- -------------------+
//| 시그널 종료(엑시트 매도) |
//+----------------------------------------------- -------------------+
if (주문 == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (막대 != BarCount))) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
if (!EachTickMode) BarCount = 막대;
IsTrade = 거짓;
계속하다;
}
//후행 정지
if(UseTrailingStop && TrailingStop > 0) {
if((OrderOpenPrice() - 묻기) > (포인트 * TrailingStop)) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), 묻기 + 포인트 * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = 막대;
계속하다;
}
}
}
}
}
}
//+----------------------------------------------- -------------------+
//| 시그널 비긴(진입) |
//+----------------------------------------------- -------------------+
if (False) 주문 = SIGNAL_BUY;
if (False) 주문 = SIGNAL_SELL;
//+----------------------------------------------- -------------------+
//| 신호 종료 |
//+----------------------------------------------- -------------------+
//구입하다
if (주문 == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (막대 != BarCount)))) {
if(!IsTrade) {
// 여유 여백 확인
if (AccountFreeMargin() < (1000 * 랏)) {
Print("돈이 없습니다. Free Margin = ", AccountFreeMargin());
리턴(0);
}
if (UseStopLoss) StopLossLevel = 묻기 - StopLoss * 포인트; 그렇지 않으면 StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = 묻기 + TakeProfit * 포인트; 그렇지 않으면 TakeProfitLevel = 0.0;
티켓 = OrderSend(Symbol(), OP_BUY, lot, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
if(티켓 > 0) {
if (OrderSelect(티켓, SELECT_BY_TICKET, MODE_TRADES)) {
Print("구매 주문이 열렸습니다 : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
} 또 다른 {
Print("구매 주문 열기 오류: ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = 막대;
리턴(0);
}
}
//팔다
if (주문 == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (막대 != BarCount))) {
if(!IsTrade) {
// 여유 여백 확인
if (AccountFreeMargin() < (1000 * 랏)) {
Print("돈이 없습니다. Free Margin = ", AccountFreeMargin());
리턴(0);
}
if (UseStopLoss) StopLossLevel = Bid + StopLoss * 포인트; 그렇지 않으면 StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = 입찰가 - TakeProfit * 포인트; 그렇지 않으면 TakeProfitLevel = 0.0;
티켓 = OrderSend(Symbol(), OP_SELL, lot, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);
if(티켓 > 0) {
if (OrderSelect(티켓, SELECT_BY_TICKET, MODE_TRADES)) {
Print(" SELL 주문 이 열렸습니다 : ", OrderOpenPrice());
if (SignalMail) SendMail("[신호 경고]", "[" + Symbol() + "] " + DoubleToStr(입찰가, 숫자) + " 공개 매도");
} 또 다른 {
Print("판매 주문 열기 오류: ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = 막대;
리턴(0);
}
}
if (!EachTickMode) BarCount = 막대;
리턴(0);
}
//+----------------------------------------------- -------------------+[/lang]
이 코드를 사용하여 공개 거래의 이익 을 늘리려고 합니다(두 개의 공개 거래인 경우).
if(OrderType()==OP_BUY)
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Ask+((TakeProfit+20)*Point),0,Blue);
if(OrderType()==OP_SELL)
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Ask+((TakeProfit+20)*Point),0,Blue);총계=주문총계(); btw.
그래도 작동하지 않습니다. 제안 사항이 있습니까?
감사해요,
매드맥스3
일일 거래 수를 1로 제한하는 데 도움
저는 프로그래밍이 처음이고 MQL4에 대한 도움이 필요합니다. 나는 몇 가지 코더 가이드를 공부했고 내 거래 전략에 따라 거래를 열고 닫는 방법을 알아냈습니다. 내 어려움은 일일 거래 수를 1로 제한하는 것입니다. 하루에 1 거래 이상을 열고 싶지 않습니다(서버 시간에 따라). 그래서 오늘 주문이 열렸는지 확인하기 위해 열린 주문과 닫은 주문을 확인 하고 싶습니다. 오늘 주문이 열리면 그날 추가 주문을 열지 마십시오.
도와주세요.
추신: EA에 MagicNumber 매개변수 (정확한 이름)가 있다고 가정합니다.
PPS: 최대 daiy 시간 프레임에서 작동합니다. 주간 및 월간 차트에서 제대로 작동하지 않습니다.
저는 프로그래밍이 처음이고 MQL4에 대한 도움이 필요합니다. 나는 몇 가지 코더 가이드를 공부했고 내 거래 전략에 따라 거래를 열고 닫는 방법을 알아냈습니다. 내 어려움은 일일 거래 수를 1로 제한하는 것입니다. 하루에 1 거래 이상을 열고 싶지 않습니다(서버 시간에 따라). 그래서 오늘 주문이 열렸는지 확인하기 위해 열린 주문과 닫은 주문을 확인하고 싶습니다. 오늘 주문이 열리면 그날 추가 주문을 열지 마십시오. 도와주세요.
[langtitle=pl] 함수 테마를 테마로 변환(닫기,마침표)[/langtitle]
위탐
Jeszcze raz bo cos sie zle wkleilo. Jak przekazac wartosc funkcji Tema do Var1. Jak robie tak jak w kodzie ponizej to Var1 jest puste.
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 DarkBlue
#property indicator_width1 2
//---- input parameters
extern int EMA_period=4;
//---- buffers
string txt;
double TemaBuffer[];
double Ema[];
double EmaOfEma[];
double EmaOfEmaOfEma[];
double Var1;
int Var2;
int i,limit,limit2,limit3;
extern int Apply_To_Price=1;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
IndicatorBuffers(5);
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,Var1);
SetIndexBuffer(1,TemaBuffer);
SetIndexBuffer(2,Ema);
SetIndexBuffer(3,EmaOfEma);
SetIndexBuffer(4,EmaOfEmaOfEma);
IndicatorShortName("TEMA("+EMA_period+")");
switch(Apply_To_Price)
{
case 1:
{txt="Open";break;}
case 2:
{txt="High";break;}
case 3:
{txt="Low"; break;}
case 4:
{txt="Median"; break;}
case 5:
{txt="Typical"; break;}
case 6:
{txt="WghtdClose"; break;}
default:
{txt="Close";}
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//----
int counted_bars=IndicatorCounted();
if (counted_bars==0)
{
limit=Bars-1;
limit2=limit-EMA_period;
limit3=limit2-EMA_period;
}
if (counted_bars>0)
{
limit=Bars-counted_bars-1;
limit2=limit;
limit3=limit2;
}
for (i=limit3;i>=0;i--)
{
Var1 = Tema(Apply_To_Price,4); //=======================TUTAJ JEST PROBLEM W VAR1 NIC NIE MA. DLACZEGO?
// Alert(Var1);
}
Var2 = dodawanie (2,3);
return(0);
}
double Tema(int Cena, int cykl)
{
//----
for (i=limit;i>=0;i--) Ema=iMA(NULL,0,cykl,0,MODE_EMA,Cena,i);
for (i=limit2;i>=0;i--) EmaOfEma=iMAOnArray(Ema,0,cykl,0,MODE_EMA,i);
for (i=limit3;i>=0;i--) EmaOfEmaOfEma=iMAOnArray(EmaOfEma,0,cykl,0,MODE_EMA,i);
for (i=limit3;i>=0;i--)
{
TemaBuffer=3*Ema-3*EmaOfEma+EmaOfEmaOfEma;
//Alert(TemaBuffer);
}
return(TemaBuffer);
}
int dodawanie (int a, int b)
{
int c;
c=a+b;
return(c);
}
이렇게 (TEMA) ...
function 처럼 원한다면 다음과 같아야 합니다.예시 지표도 첨부합니다. 가격 유형 대신 값을 전달하는 이점은 이러한 방식으로 모든 값에 테마를 적용할 수 있다는 것입니다(가격의 테마일 필요는 없으며 예를 들어 다른 지표의 테마일 수 있음)
위탐
Jeszcze raz bo cos sie zle wkleilo. Jak przekazac wartosc funkcji Tema do Var1. Jak robie tak jak w kodzie ponizej to Var1 jest puste.
[PHP]
#속성 표시기_차트_창
#속성 표시기_버퍼 1
#property indicator_color1 다크블루
#속성 표시기_너비1 2
//---- 입력 매개변수
외부 정수 EMA_period=4;
//---- 버퍼
문자열 txt;
이중 테마버퍼[];
더블 에마[];
이중 EmaOfEma[];
이중 EmaOfEmaOfEma[];
이중 Var1;
정수 Var2;
int i,limit,limit2,limit3;
extern int Apply_To_Price=1;
//+----------------------------------------------- -------------------+
//| 커스텀 인디케이터 초기화 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//---- 표시기
표시 버퍼(5);
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,Var1);
SetIndexBuffer(1, 테마 버퍼);
SetIndexBuffer(2,Ema);
SetIndexBuffer(3,EmaOfEma);
SetIndexBuffer(4,EmaOfEmaOfEma);
IndicatorShortName("TEMA("+EMA_period+")");
스위치(Apply_To_Price)
{
사례 1:
{txt="열기";중단;}
사례 2:
{txt="높음";중단;}
사례 3:
{txt="낮음"; 부서지다;}
사례 4:
{txt="중앙값"; 부서지다;}
사례 5:
{txt="일반"; 부서지다;}
사례 6:
{txt="Wghtd닫기"; 부서지다;}
기본:
{txt="닫기";}
}
//----
리턴(0);
}
//+----------------------------------------------- -------------------+
//| 커스텀 인디케이터 초기화 해제 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//----
//----
리턴(0);
}
//+----------------------------------------------- -------------------+
//| 사용자 지정 표시기 반복 기능 |
//+----------------------------------------------- -------------------+
정수 시작()
{
//----
int counted_bars=IndicatorCounted();
if (counted_bars==0)
{
제한=바-1;
limit2=한도-EMA_기간;
limit3=limit2-EMA_period;
}
if (counted_bars>0)
{
limit=바-카운트_바-1;
제한2=제한;
제한3=제한2;
}
(i=limit3;i>=0;i--)
{
Var1 = 테마(Apply_To_Price,4); //========================TUTAJ JEST 문제 W VAR1 NIC NIE MA. DLACZEGO?
// 경고(Var1);
}
Var2 = 도다와니(2,3);
리턴(0);
}
더블 테마(int Cena, int cykl)
{
//----
for (i=limit;i>=0;i--) Ema=iMA(NULL,0,cykl,0,MODE_EMA,Cena,i);
(i=limit2;i>=0;i--) EmaOfEma=iMAOnArray(Ema,0,cykl,0,MODE_EMA,i);
(i=limit3;i>=0;i--) EmaOfEmaOfEma=iMAOnArray(EmaOfEma,0,cykl,0,MODE_EMA,i);
(i=limit3;i>=0;i--)
{
테마버퍼=3*Ema-3*EmaOfEma+EmaOfEmaOfEma;
//알림(테마버퍼);
}
반환(테마버퍼);
}
int dodawanie (int, int b)
{
정수 c;
c=a+b;
반환(c);
}
HAMMER 코드를 도와주세요
여보세요,
mql4에서 새로 시작하고 있습니다. 다음 지표와 함께 촛대에서 흑백 망치를 선택하려고합니다. 그러나 차트에서 때때로 촛대가 잘못된 식별 텍스트를 얻습니다(흰색 망치 양초는 검은 망치 양초로 식별되고 그 반대의 경우도 마찬가지입니다). 이 상황을 도와주세요. 미리 감사드립니다.
#속성 표시기_차트_창
정수 제한;
//---- 버퍼
현 망치[200000];
//+----------------------------------------------- -------------------+
//| 커스텀 인디케이터 초기화 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
리턴(0);
}
//+----------------------------------------------- -------------------+
//| CuStor 인디케이터 초기화 해제 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//----
ObjectsDeleteAll(망치,OBJ_TEXT);
//----
리턴(0);
}
//+----------------------------------------------- -------------------+
//| 사용자 지정 표시기 반복 기능 |
//+----------------------------------------------- -------------------+
정수 시작()
{
정수 N;
정수 N1;
정수 N2;
문자열 텍스트;
int counted_bars=IndicatorCounted();
limit=막대-counted_bars;
for(N = 1; N < 한계; N++) {
망치[N]= CharToStr(N);
N1 = N + 1;
N2 = N + 2;
//----
//---- 가능한 오류 확인
if(counted_bars<0) {
Alert("바가 없습니다..");
리턴(-1);
}
// 해머 화이트 확인
if (((닫기[N1]>열기[N1]) && ((열기[N1]-낮음[N1])>=2*(닫기[N1]-열기[N1])) && ((높음[N1] -닫기[N1])<=(열기[N1]-낮음[N1])*0.10))) {
ObjectCreate(망치[N], OBJ_TEXT, 0, 시간[N1], 낮음[N1] - 점);
ObjectSetText(hammer[N], "WHmr", 9, "Times New Roman", LawnGreen);
}
// 해머 블랙 확인
if (((닫기[N1]=2*(열기[N1]-닫기[N1]))) && ((높음[N1]-열기[N1])<=(닫기[N1]-낮음[N1])* 0.10))) {
ObjectCreate(망치[N], OBJ_TEXT, 0, 시간[N1], 낮음[N1] - 점);
ObjectSetText(hammer[N], "BHmr", 9, "Times New Roman", LawnGreen);
}
//----
} // for 루프의 끝
리턴(0);
}
//+----------------------------------------------- -------------------+
여보세요,
mql4에서 새로 시작하고 있습니다. 다음 지표와 함께 촛대에서 흑백 망치를 선택하려고합니다. 그러나 차트에서 때때로 촛대가 잘못된 식별 텍스트를 얻습니다(흰색 망치 양초는 검은 망치 양초로 식별되고 그 반대의 경우도 마찬가지입니다). 이 상황을 도와주세요. 미리 감사드립니다.
#속성 표시기_차트_창
정수 제한;
//---- 버퍼
현 망치[200000];
//+----------------------------------------------- -------------------+
//| 커스텀 인디케이터 초기화 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
리턴(0);
}
//+----------------------------------------------- -------------------+
//| CuStor 인디케이터 초기화 해제 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//----
ObjectsDeleteAll(망치,OBJ_TEXT);
//----
리턴(0);
}
//+----------------------------------------------- -------------------+
//| 사용자 지정 표시기 반복 기능 |
//+----------------------------------------------- -------------------+
정수 시작()
{
정수 N;
정수 N1;
정수 N2;
문자열 텍스트;
int counted_bars=IndicatorCounted();
limit=막대-counted_bars;
for(N = 1; N < 한계; N++) {
망치[N]= CharToStr(N);
N1 = N + 1;
N2 = N + 2;
//----
//---- 가능한 오류 확인
if(counted_bars<0) {
Alert("바가 없습니다..");
리턴(-1);
}
// 해머 화이트 확인
if (((닫기[N1]>열기[N1]) && ((열기[N1]-낮음[N1])>=2*(닫기[N1]-열기[N1])) && ((높음[N1] -닫기[N1])<=(열기[N1]-낮음[N1])*0.10))) {
ObjectCreate(망치[N], OBJ_TEXT, 0, 시간[N1], 낮음[N1] - 점);
ObjectSetText(hammer[N], "WHmr", 9, "Times New Roman", LawnGreen);
}
// 해머 블랙 확인
if (((닫기[N1]=2*(열기[N1]-닫기[N1]))) && ((높음[N1]-열기[N1])<=(닫기[N1]-낮음[N1])* 0.10))) {
ObjectCreate(망치[N], OBJ_TEXT, 0, 시간[N1], 낮음[N1] - 점);
ObjectSetText(hammer[N], "BHmr", 9, "Times New Roman", LawnGreen);
}
//----
} // for 루프의 끝
리턴(0);
}
//+----------------------------------------------- -------------------+안녕하세요 스베지르
양초 패턴에 대한 이 표시기가 도움이 될 수 있습니다.