저는 이 포럼을 처음 사용합니다. 누군가 엘리트 섹션의 가치에 대한 정보를 제공할 수 있는지 알고 싶습니다(위 링크에 거의 정보가 없는 판매 프레젠테이션 제외).
또한 위의 링크로 연결되는 웹 페이지에서 질문을 제출하려고 시도했지만 양식에 필드 중 하나가 비어 있다고 계속 표시됩니다. 해당 필드는 우선 순위 필드이며 드롭다운 상자에 아무 것도 없으며(모두 비어 있음) 해당 필드에 값을 가질 수 있는 방법이 없습니다. 따라서 그런 식으로 질문을 제출할 수 없습니다.
다른 사람이 이것을 경험 했습니까? alpari 데이터를 사용하여 시스템을 백테스트하고 있는데 4107 invalid price 및 131 invalid volume 오류가 발생합니다. 4107은 통화 쌍보다 4자리 숫자가 더 많기 때문에 생성된 것입니다. 내가 OrderSend()에 전달한 가격이 미리 정의된 Bid and Ask이기 때문에 4107을 얻는다는 사실에 놀랐습니다. 또한 Comment(Bid, " ", Ask); OrderSend() 전에 Bid와 Ask가 무엇을 반환했는지 확인하십시오. 그리고 Comment()에서는 적절한 십진수 정밀도였지만 OrderSend()는 여전히 오류를 생성합니다. Bid/Ask 값을 변수에 할당하고 변수에 NormalizeDouble()을 사용한 다음 OrderSend()에 전달하면 작동합니다.
몇 가지 문제 더
1. 결과에서 내가 발견한 것 중 하나는 거래가 열리면 이전 거래가 완료될 때까지 다른 거래가 열리지 않는다는 것입니다. 변경할 수 있는 방법이 있습니까? 중복 거래를 합니까?
(가능한 경우 중복 거래가 있는 두 번째 파일을 게시하십시오. 둘 다 테스트해야 합니다.)
2. 간단한 질문,
500 또는 1000의 시작 잔액을 입력했을 때 테스터가 결과를 표시하지 않지만 3,000 이상에서는 표시되는 경우 정확히 무엇을 의미합니까? (시작 잔액이 낮은 거래에서 파산한다는 의미입니까? ?)
어떻게 루프에서 벗어나나요?!
나는 내 자신의 경고 중 일부를 추가하고 마침내 약간의 성공을 거두었지만 여러 번 스스로 경고 루프를 끝내고 깨는 유일한 방법은 MT4를 강제로 닫는 것입니다. 어떻게 거기에 중단을 넣을 수 있습니까? 사용할 수 있는 키보드 브레이크가 있습니까?
내 기본적인 질문에 도움을 주셔서 감사합니다
이것을 보여줄 수/있겠습니까?...
프로그래밍은 여전히 나를 혼란스럽게합니다 ...
매우 기본적인 것을 안내하고 코드가 어떻게 이런 일이 일어나도록 해야 하는지 보여주실 수 있는지 궁금합니다...
두 개의 이동 평균이 교차합니다... 후행 정지가 있는 하나의 주문을 입력합니다...
extern double lots=1.0;
extern int MA1=1;
extern int MA2=5;
extern int trailingstop=8;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+나는이 유틸리티를 사용하고 이것을 만들었습니다 ....
//| This MQL is generated by Expert Advisor Builder |
//| http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/ |
//| |
//| In no event will author be liable for any damages whatsoever. |
//| Use at your own risk. |
//| |
//| Please do not remove this header. |
//+------------------------------------------------------------------+
#property copyright "Expert Advisor Builder"
#property link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"
extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = False;
extern double Lots = 1.0;
extern int Slippage = 0;
extern bool StopLossMode = False;
extern int StopLoss = 10;
extern bool TakeProfitMode = False;
extern int TakeProfit = 8;
extern bool TrailingStopMode = True;
extern int TrailingStop = 10;
#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init() {
BarCount = Bars;
if (EachTickMode) Current = 0; else Current = 1;
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start() {
int Order = SIGNAL_NONE;
int Total, Ticket;
double StopLossLevel, TakeProfitLevel;
if (EachTickMode && Bars != BarCount) TickCheck = False;
Total = OrdersTotal();
Order = SIGNAL_NONE;
//+------------------------------------------------------------------+
//| Variable Begin |
//+------------------------------------------------------------------+
double Buy1_1 = iClose("EURUSD", PERIOD_M1, Current + 0);
double Buy1_2 = iMA("EURUSD", PERIOD_M1, 5, 0, MODE_EMA, PRICE_CLOSE, Current + 0);
double Sell1_1 = iClose("EURUSD", PERIOD_M1, Current + 0);
double Sell1_2 = iMA("EURUSD", PERIOD_M1, 5, 0, MODE_EMA, PRICE_CLOSE, Current + 0);
//+------------------------------------------------------------------+
//| Variable End |
//+------------------------------------------------------------------+
//Check position
bool IsTrade = False;
for (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
IsTrade = True;
if(OrderType() == OP_BUY) {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Signal End(Exit Buy) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(TrailingStopMode && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
} else {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Sell) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Signal End(Exit Sell) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(TrailingStopMode && TrailingStop > 0) {
if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Signal Begin(Entry) |
//+------------------------------------------------------------------+
if (Buy1_1 > Buy1_2) Order = SIGNAL_BUY;
if (Sell1_1 < Sell1_2) Order = SIGNAL_SELL;
//+------------------------------------------------------------------+
//| Signal End |
//+------------------------------------------------------------------+
//Buy
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("BUY order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
} else {
Print("Error opening BUY order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
//Sell
if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (StopLossMode) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;
if (TakeProfitMode) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("SELL order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");
} else {
Print("Error opening SELL order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
if (!EachTickMode) BarCount = Bars;
return(0);
}
//+------------------------------------------------------------------+문제는 그것이 전략 테스터 에서 실행될 때 어떤 결과도 제공하지 않는다는 것입니다.
오, 알았다! 튜토리얼에 정말 감사합니다
나는 두 가지 간단한 질문이 있다고 생각합니다.
heiken ash 양초를 기본적으로 3 대신 5의 두께로 만들 수 있습니까? 내가 새로운 차트를 불러올 때마다 그들은 3으로 돌아갑니다.
또한 RSI 지표의 값에 따라 캔들 위 또는 아래에 표시를 만들 수 있습니까?
나는 프로그래밍에 대해 어느 정도 이해하지만 이것의 구문을 모릅니다 ... 그래서 아무것도 모르는 것처럼 행동하십시오
정말 감사합니다.. 뭔가 발견하면 게시하겠습니다
PS 어드바이저 빌더가 NICE인데 INDICATOR 빌더도 있나요? 그것은 놀라운 것입니다나는 Heiken Ashi 만 고쳤습니다.
신규 - 질문 - 도움 필요
저는 이 포럼을 처음 사용합니다. 누군가 엘리트 섹션의 가치에 대한 정보를 제공할 수 있는지 알고 싶습니다(위 링크에 거의 정보가 없는 판매 프레젠테이션 제외).
또한 위의 링크로 연결되는 웹 페이지에서 질문을 제출하려고 시도했지만 양식에 필드 중 하나가 비어 있다고 계속 표시됩니다. 해당 필드는 우선 순위 필드이며 드롭다운 상자에 아무 것도 없으며(모두 비어 있음) 해당 필드에 값을 가질 수 있는 방법이 없습니다. 따라서 그런 식으로 질문을 제출할 수 없습니다.
DD
다른 사람이 이것을 경험 했습니까? alpari 데이터를 사용하여 시스템을 백테스트하고 있는데 4107 invalid price 및 131 invalid volume 오류가 발생합니다. 4107은 통화 쌍보다 4자리 숫자가 더 많기 때문에 생성된 것입니다. 내가 OrderSend()에 전달한 가격이 미리 정의된 Bid and Ask이기 때문에 4107을 얻는다는 사실에 놀랐습니다. 또한 Comment(Bid, " ", Ask); OrderSend() 전에 Bid와 Ask가 무엇을 반환했는지 확인하십시오. 그리고 Comment()에서는 적절한 십진수 정밀도였지만 OrderSend()는 여전히 오류를 생성합니다. Bid/Ask 값을 변수에 할당하고 변수에 NormalizeDouble()을 사용한 다음 OrderSend()에 전달하면 작동합니다.
그러나 여전히 131이 표시되며 이에 대한 해결 방법을 모릅니다.
PipChick, 개인적으로 엘리트 섹션에 들어갈 가치가 없다고 생각합니다.
초보자.
나는 약간의 C++를 알고 있지만 아주 기본적인 코드로 어려움을 겪고 있습니다.
내가 원하는 것:
가격은 1.2788입니다. 10핍까지 오르면 사고 싶습니다. 10핍 아래로 떨어지면 매도하고 싶습니다.
올바른 코드가 있습니까?
OrderSend(Symbol(),OP_BUYSTOP,1,Ask+10*포인트,슬리피지,
(문의+10*포인트)-10*포인트,
(문의+10*포인트)+200*포인트,"내주문댓글",0,0,그린);
OrderSend(Symbol(),OP_SELLSTOP,1,Bid-10*포인트,슬리피지,
(입찰-10*포인트)+10*포인트,
(입찰 -10*포인트)-200*포인트,"내 주문 댓글",0,0,녹색);
http://www.metatrader.info/node/34 를 읽었지만 잃어버렸습니다. 기다려 주셔서 감사합니다.
안녕,
내 문제: MT3,
그것은 작동하지 않습니다. 왜요?
고마워, 봉고
매도=거짓;
구매=거짓;
if ((C[1]>O[1])<O[0]) then { buy=true; 매도=거짓; }
if ((C[1]O[0]) then { 매도=참; 매수=거짓; }