코딩하는 방법? - 페이지 149

 

비지그재그 신호 문제

안녕하세요 kevin07님,

nonlagzigzag에 대한 경고가 작동하지만 지그재그 선과 일치하지 않습니다. 경고를 여러 번 받았지만 지그재그 선이 그려지지 않았습니다. 또한 표시기를 처음 로드하면 경고가 표시됩니다. 코드를 보고 문제를 찾을 수 있는지 확인할 수 있습니까? 이메일 알림도 잘 작동합니다. 포함해 주셔서 감사합니다. 당신이 할 수 있는 모든 것은 매우 감사할 것입니다.

안부 인사, 톰

 

논랙지그재그

안녕하세요, tk748님, 인디를 로드할 때 팝업된 초기 경고는 마지막 최고 고점 또는 최저 최저점(여러 캔들 뒤에서 발생했을 수 있음) 이후의 현재 거래 방향을 알려줍니다. 다음 라인이 그려지기 전에 중간 경고가 발생한다는 소식을 듣게 되어 유감입니다. 경고에 대한 IF 문에는 CurrentDirection != PreviousDirection인지 확인하는 추가 필터가 있어 다음 줄이 그려질 때까지 추가 경고가 나타나지 않습니다. (나는 내 EA를 끝내는 일에 관여하고 있으며 지금은 당신을 대신할 수 없습니다.) 낮에는 일을 해야 합니다. 밤에는 잠을 자야 합니다. EA가 없으면 많은 거래를 할 수 없습니다. 내 우선 순위는 일부 수익성없는 거래가 열리지 않도록 필터로 지그재그 또는 변동성 인디를 사용하는 것입니다.

그 과정에서 추가 코드 를 추가하는 방법을 찾으면 알려 드리겠습니다.

최고의 소원, kevin07

 

스트래들 스크립트

나는 이 스크립트를 가지고 있지만 런던과 거래하도록 타이머를 설정하는 옵션을 갖고 싶습니다... 이것을 추가하는 것이 얼마나 어려울까요? ?

언제나처럼... 도와주셔서 감사합니다!!

#include

#include

#define LOOK_TO_BUY 1

#define LOOK_TO_SELL 2

extern int Magic_Number = 412625; // set this to a unique number if you intend to use the script simulataneously across many charts on the same account.

extern int UserDefinedSpread = 0; // set this to 0 if you want to use market spread. valid value is >= 0

extern double LotSize = 0.1;

extern int Slippage = 3;

extern int StopLoss = 25; // If you set StopLoss to 0, no stop loss level will be placed.

extern int TakeProfit = 0; // If you set TakeProfit to 0, no stop loss level will be placed.

extern bool OneCancelsOther = true; // This determines if you want the script to stay running and track, then delete the opposite pending order when an order has executed.

extern int NumOfCandles = 3; // This determines how many previous candles you want the EA to look for the High Lows. (buy and sell prices). valid value is > 0

extern int PositionalMarginPips = 40; // The distance excluding spread from the high lows for the opening prices. valid value is >= 0

extern int intervalseconds = 1.0; //The time interval for the script to check your trades. allows fractional seconds.

double BuyPrice = 0;

double SellPrice = 0;

int CustomSpread = 0;

bool KeepRunning = true;

int ticketToDelete = 0;

void GetPrices()

{

double HighestHigh = High[1];

if (NumOfCandles > 1)

{

for (int i=2; i<=NumOfCandles; i++)

{

if (High > HighestHigh)

{

HighestHigh = High;

}

}

}

BuyPrice = HighestHigh + (PositionalMarginPips * Point);

BuyPrice = NormalizeDouble(BuyPrice,Digits);

double LowestLow = Low[1];

if (NumOfCandles > 1)

{

for (i=2; i<=NumOfCandles; i++)

{

if (Low < LowestLow)

{

LowestLow = Low;

}

}

}

SellPrice = LowestLow - (PositionalMarginPips * Point);

BuyPrice = NormalizeDouble(BuyPrice,Digits);

}

void PlaceTrades()

{

double TakeProfitPrice, StopLossPrice;

if (TakeProfit==0)

{

TakeProfitPrice = 0;

}

else

{

TakeProfitPrice = BuyPrice + (TakeProfit * Point);

TakeProfitPrice = NormalizeDouble(TakeProfitPrice,Digits);

}

if (StopLoss == 0)

{

StopLossPrice = 0;

}

else

{

StopLossPrice = BuyPrice - (StopLoss * Point);

StopLossPrice = NormalizeDouble(StopLossPrice,Digits);

}

SendOrders (LOOK_TO_BUY, LotSize, BuyPrice, Slippage, StopLossPrice, TakeProfitPrice, "Straddle Buy", 0);

if (TakeProfit==0)

{

TakeProfitPrice = 0;

}

else

{

TakeProfitPrice = SellPrice - (TakeProfit * Point);

TakeProfitPrice = NormalizeDouble(TakeProfitPrice,Digits);

}

if (StopLoss == 0)

{

StopLossPrice = 0;

}

else

{

StopLossPrice = SellPrice + (StopLoss * Point);

StopLossPrice = NormalizeDouble(StopLossPrice,Digits);

}

SendOrders (LOOK_TO_SELL, LotSize, SellPrice, Slippage, StopLossPrice, TakeProfitPrice, "Straddle Sell", 0);

}

void SendOrders (int BuyOrSell, double LotSize, double PriceToOpen, double Slippage, double SL_Price, double TP_Price, string comments, datetime ExpirationTime)

{

int PositionType, ticket, errorType;

if (BuyOrSell == LOOK_TO_BUY)

{

if (PriceToOpen > Ask)

{

PositionType = OP_BUYSTOP;

}

if (PriceToOpen < Ask)

{

PositionType = OP_BUYLIMIT;

}

Print("Bid: "+Bid+" Ask: "+Ask+" | Opening Buy Order: "+Symbol()+", "+PositionType+", "+LotSize+", "+PriceToOpen+", "+Slippage+", "+SL_Price+", "+TP_Price+", "+comments+", "+Magic_Number+", "+ExpirationTime+", Green");

ticket=OrderSend(Symbol(),PositionType,LotSize,PriceToOpen,Slippage,SL_Price,TP_Price,comments,Magic_Number,ExpirationTime,CLR_NONE);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

{

Print("BUY order opened : ",OrderOpenPrice());

}

}

else

{

errorType = GetLastError();

Print("Error opening BUY order : ", ErrorDescription(errorType));

}

}

if (BuyOrSell == LOOK_TO_SELL)

{

if (PriceToOpen < Bid)

{

PositionType = OP_SELLSTOP;

}

if (PriceToOpen > Bid)

{

PositionType = OP_SELLLIMIT;

}

Print("Bid: "+Bid+" Ask: "+Ask+" | Opening Sell Order: "+Symbol()+", "+PositionType+", "+LotSize+", "+PriceToOpen+", "+Slippage+", "+SL_Price+", "+TP_Price+", "+comments+", "+Magic_Number+", "+ExpirationTime+", Red");

ticket=OrderSend(Symbol(),PositionType,LotSize,PriceToOpen,Slippage,SL_Price,TP_Price,comments,Magic_Number,ExpirationTime,CLR_NONE);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

{

Print("Sell order opened : ",OrderOpenPrice());

}

}

else

{

errorType = GetLastError();

Print("Error opening SELL order : ", ErrorDescription(errorType));

}

}

}

void GetSpread()

{

if (UserDefinedSpread <= 0)

{

CustomSpread = MarketInfo(Symbol(),MODE_SPREAD);

}

else

{

CustomSpread = UserDefinedSpread;

}

}

int GetNumberOfPending()

{

int count = 0;

int total = OrdersTotal();

if (total > 0)

{

for(int cnt=0;cnt<total;cnt++)

{

if(OrderSelect(cnt,SELECT_BY_POS))

{

if(OrderSymbol()==Symbol() && OrderMagicNumber() == Magic_Number)

{

if(OrderType() != OP_BUY && OrderType() != OP_SELL)

{

ticketToDelete = OrderTicket();

count++;

}

}

}

}

}

return (count);

}

void ManageTrades()

{

// If there's only one pending trade left, assume the other one is opened.

// So Delete this one.

if (GetNumberOfPending() == 1)

{

if (OrderDelete(ticketToDelete))

{

KeepRunning = false;

Alert ("Straddle script has ended");

}

}

}

//+------------------------------------------------------------------+

//| script program start function |

//+------------------------------------------------------------------+

int start()

{

//----

GetSpread();

GetPrices();

PlaceTrades();

Alert ("Pending Trades Placed. Please Wait...");

int intervalMilliseconds = intervalseconds * 1000;

while (KeepRunning && OneCancelsOther)

{

Sleep(intervalMilliseconds);

ManageTrades();

}

//----

return(0);

}

//+------------------------------------------------------------------+

 

비지그재그 경고

안녕하세요 kevin07님,

이 지표에 대한 작업에 감사드립니다. 아마도 EA 코딩 중에 신호가 적절한 시간에 나타나 도록 하는 방법에 대한 아이디어가 있을 것입니다. 그 동안 여기 다른 누군가가 문제를 해결할 시간이 있을 수 있습니다. EA에 행운을 빕니다.

문안 인사,

 

마티갈레 코드를 추가하도록 도와주세요.

저는 이 사이트를 사용하여 이 EA를 만들었습니다: 거래에 대한 간단한 규칙을 기반으로 하는 MetaTrader 4용 Expert Advisor Builder .

이 EA를 시도하여 결과를 확인할 수 있습니다. SL = 100, TP = 300, 후행 정지점 = 70으로 설정하고 EUR/USD H4에서 실행하십시오.

이 시스템을 거래하기 위해 마티갈레를 사용하도록 도와주시겠습니까?

100핍 = 계정 잔액의 2%가 되도록 금액을 사용하십시오.

거래 n-1 이 손실되면 이익이 있는 클로징 포지션까지 거래 n 의 두 배입니다.

매우 감사합니다!

파일:
 
vinafx:
저는 이 사이트를 사용하여 이 EA를 만들었습니다: 거래에 대한 간단한 규칙을 기반으로 하는 MetaTrader 4용 Expert Advisor Builder .

이 EA를 시도하여 결과를 볼 수 있습니다. SL = 100, TP = 300, 후행 정지점 = 70으로 설정하고 EUR/USD H4에서 실행하십시오.

이 시스템을 거래하기 위해 마티갈레를 사용하도록 도와주시겠습니까?

100핍 = 계정 잔액의 2%가 되도록 금액을 사용하십시오.

거래 n-1 이 손실되면 이익이 있는 클로징 포지션까지 거래 n 의 두 배입니다.

매우 감사합니다!

약간의 시간을 할애할 가치가 있습니다, 친구들! 마티게일 코드 없이 거래한 결과입니다. 초기 보증금: 10000; 거래당 1랏. SL = 100; TP = 300; 후행 ST: 70; EUR/USD H4.

파일:
 

이 코드를 어떻게 단순화합니까?

와 b <= c의 차이 then trade = true, else false..

지금까지 누군가 나에게 이것을 코딩하는 더 짧은 방법을 보여줄 수 있다면 이것은 내가 만든 것입니다.

만약 ( a >= b)

{

if (a - b <= c ) trade = true;

if (a - b > c) trade = false;

}

만약 ( a < b)

{

if (b - a <= c ) trade = true;

if (b - > c) trade = false;

}

 

이것을 시도하십시오 (나는 c가 >= 0이라고 가정합니다)

trade = (MathAbs(a-b) <= c);

문안 인사

믈라덴

fercan:
이 코드를 어떻게 단순화합니까?

와 b <= c의 차이 then trade = true, else false..

지금까지 누군가 나에게 이것을 코딩하는 더 짧은 방법을 보여줄 수 있다면 이것은 내가 만든 것입니다.

만약 ( a >= b)

{

if (a - b <= c ) trade = true;

if (a - b > c) trade = false;

}

만약 ( a < b)

{

if (b - a <= c ) trade = true;

if (b - > c) trade = false;

}
 
mladen:
이것을 시도하십시오 (나는 c가 >= 0이라고 가정합니다)
trade = (MathAbs(a-b) <= c);

문안 인사

믈라덴

고마워.. 전에도 이런 걸 찾고 있었는데.. 고마워..

 

NonLagZigZag_Signal_v2 경고 테스트

tk748:
안녕하세요 kevin07님,

감사합니다 ...아마도 ... 적절한 시간에 신호를 표시하는 방법에 대한 아이디어가 있을 것입니다...

문안 인사,

톰,

나는 이 지그재그 인디로 돌아가 중간 경고를 걸러낼 수 있었다. 나는 이것을 즉시 보내고 그것을 테스트하지 않았습니다. 경고와 관련된 문제를 발견하면 알려주십시오.

감사해요

케빈07