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

 
 

여러분, 안녕하세요,

이것은 어리석은 코딩 질문이며 이전에 어디선가 본 적이 있지만 도움이 필요합니다.

저는 사용자 지정 표시기 를 코딩하고 있으며, 새 막대의 시작에만 있는 현재 입찰 가격을 읽기만 하면 됩니다. Open[0]을 사용할 수는 없습니다. 새 틱이 들어올 때마다 현재 막대에 대한 열린 값을 계속 반환하기 때문입니다. 새 막대가 형성될 때까지 값이 한 번만 반환되기를 원합니다.

나는 여기서 아주 간단한 것을 놓치고 있다는 것을 알고 있지만 그것을 알아내는 데 약간의 문제가 있습니다. 누군가 나를 도울 수 있습니까?

감사해요,

-늑대

 
wolfe:
여러분, 안녕하세요,

이것은 어리석은 코딩 질문이며 이전에 어디선가 본 적이 있지만 도움이 필요합니다.

저는 사용자 지정 지표를 코딩 중이며, 새 막대의 시작에만 있는 현재 입찰 가격을 읽기만 하면 됩니다. Open[0]을 사용할 수는 없습니다. 새 틱이 들어올 때마다 현재 막대에 대한 열린 값을 계속 반환하기 때문입니다. 새 막대가 형성될 때까지 값이 한 번만 반환되기를 원합니다.

나는 여기서 아주 간단한 것을 놓치고 있다는 것을 알고 있지만 그것을 알아내는 데 약간의 문제가 있습니다. 누군가 나를 도울 수 있습니까?

감사해요,

-늑대

현재 막대 시간(Time[0])을 저장하기만 하면 됩니다. 이 값이 변경되면 새 막대가 생기므로 가격을 가져와서 새 값을 저장하고 반복합니다...

 
omelette:
현재 막대 시간(Time[0])을 저장하기만 하면 됩니다. 이 값이 변경되면 새 막대가 생기므로 가격을 가져와서 새 값을 저장하고 반복합니다...

오믈렛님, 감사합니다.

나는 그것에 대해 생각했어야 했는데, 나 자신에게 약간 실망했다!

도와 주셔서 감사합니다!

 

다른 사람이 내가 이 코드에 대해 무엇을 잘못하고 있는지 보여줄 수 있습니까?

나는 timeframe Daily와 같이 더 많은 시간 프레임을 추가하고 싶지만 무엇이 잘못되었는지 모르겠습니다.

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

//| #MTF_Hi_Low_Middle.mq4

//| spudfibo의 베이스. Darkkiller의 업그레이드

//: 수정을 도와준 Mladen에게 감사합니다.

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

#속성 표시기_차트_창

extern string note1 = "H4 높은, 중간, 낮은 색상";

외부 색상 H4HigherColor = DeepSkyBlue;

외부 색상 H4MiddleColor = 노란색;

외부 색상 H4LowerColor = 핫핑크;

extern string note2 = "H4 상, 하, 중을 그리시겠습니까?";

extern bool H4HiLow = true;

extern bool H4Mid = true;

extern string note3 = "D1 상위, 중, 하위 색상";

외부 색상 D1HigherColor = DeepSkyBlue;

외부 색상 D1MiddleColor = 노란색;

외부 색상 D1LowerColor = 핫핑크;

extern string note4 = "D1 상, 하, 중을 그리시겠습니까?";

extern 부울 D1HiLow = true;

extern bool D1Mid = true;

이중 HiPrice, LoPrice, Range, D1HiPrice, D1LoPrice, D1Range;

날짜 시간 시작 시간;

정수 초기화()

{

리턴(0);

}

정수 초기화()

{

ObjectDelete("H4Higher");

ObjectDelete("H4Lower");

ObjectDelete("H4Middle");

ObjectDelete("D1Higher");

ObjectDelete("D1Lower");

ObjectDelete("D1Middle");

리턴(0);

}

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

//| 무승부

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

int DrawFibo()

{

/////////////////////////////////////////////HILO//////

if(H4HiLow)

{

if(ObjectFind("H4Higher") == -1)

ObjectCreate("H4Higher", OBJ_FIBO, 0, StartTime, HiPrice+Range, StartTime, HiPrice);

또 다른

{

ObjectSet("H4Higher",OBJPROP_TIME2, 시작 시간);

ObjectSet("H4Higher",OBJPROP_TIME1, 시작 시간);

ObjectSet("H4Higher",OBJPROP_PRICE1,고가+범위);

ObjectSet("H4Higher",OBJPROP_PRICE2,HiPrice);

}

ObjectSet("H4Higher", OBJPROP_LEVELCOLOR, H4HigherColor);

ObjectSet("H4Higher", OBJPROP_FIBOLEVELS,1);

ObjectSet("H4Higher", OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription("H4Higher", 0, "H4 HIGHER- %$");

ObjectSet("H4Higher", OBJPROP_RAY,true);

ObjectSet("H4Higher", OBJPROP_BACK,true);

ObjectSet("H4Higher", OBJPROP_COLOR,EMPTY);

if(ObjectFind("H4Lower") == -1)

ObjectCreate("H4Lower", OBJ_FIBO, 0, StartTime, LoPrice-Range, StartTime, LoPrice);

또 다른

{

ObjectSet("H4Lower", OBJPROP_TIME2, 시작 시간);

ObjectSet("H4Lower", OBJPROP_TIME1, 시작 시간);

ObjectSet("H4낮은", OBJPROP_PRICE1, 낮은 가격 범위);

ObjectSet("H4Lower", OBJPROP_PRICE2,LoPrice);

}

ObjectSet("H4Lower", OBJPROP_LEVELCOLOR, H4LowerColor);

ObjectSet("H4낮음", OBJPROP_FIBOLEVELS, 1);

ObjectSet("H4낮음", OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription("H4Lower", 0, "H4 LOWER - %$");

ObjectSet("H4Lower", OBJPROP_RAY, true);

ObjectSet("H4Lower", OBJPROP_BACK, true);

ObjectSet("H4Lower", OBJPROP_COLOR, EMPTY);

}

if(D1HiLow)

{

if(ObjectFind("D1Higher") == -1)

ObjectCreate("D1Higher", OBJ_FIBO, 0, D1StartTime, D1HiPrice+D1Range, D1StartTime, D1HiPrice);

또 다른

{

ObjectSet("D1Higher", OBJPROP_TIME2, D1StartTime);

ObjectSet("D1Higher", OBJPROP_TIME1, D1StartTime);

ObjectSet("D1Higher", OBJPROP_PRICE1, D1HiPrice+D1Range);

ObjectSet("D1Higher", OBJPROP_PRICE2, D1HiPrice);

}

ObjectSet("D1Higher", OBJPROP_LEVELCOLOR, D1HigherColor);

ObjectSet("D1고급", OBJPROP_FIBOLEVELS,1);

ObjectSet("D1상위", OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription("D1Higher", 0, "H4 HIGHER- %$");

ObjectSet("D1Higher", OBJPROP_RAY, true);

ObjectSet("D1Higher", OBJPROP_BACK, true);

ObjectSet("D1상위", OBJPROP_COLOR, EMPTY);

if(ObjectFind("D1Lower") == -1)

ObjectCreate("D1Lower", OBJ_FIBO, 0, D1StartTime, D1LoPrice-D1Range, D1StartTime, 1LoPrice);

또 다른

{

ObjectSet("D1Lower", OBJPROP_TIME2, D1StartTime);

ObjectSet("D1Lower", OBJPROP_TIME1, D1StartTime);

ObjectSet("D1Lower", OBJPROP_PRICE1, D1LoPrice-D1Range);

ObjectSet("D1낮음", OBJPROP_PRICE2, D1LoPrice);

}

ObjectSet("D1Lower", OBJPROP_LEVELCOLOR, D1LowerColor);

ObjectSet("D1낮음", OBJPROP_FIBOLEVELS,1);

ObjectSet("D1낮음", OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription("D1Lower", 0, "H4 LOWER - %$");

ObjectSet("D1Lower", OBJPROP_RAY, true);

ObjectSet("D1Lower", OBJPROP_BACK, true);

ObjectSet("D1Lower", OBJPROP_COLOR, EMPTY);

}

//////////////////////////////////////////HILO/////////

/////////////////////////////////////////가운데////

if(H4Mid)

if(ObjectFind("H4Middle") == -1)

ObjectCreate("H4Middle", OBJ_FIBO, 0, StartTime, HiPrice, StartTime+PERIOD_H4*60, LoPrice);

또 다른

{

ObjectSet("H4Middle", OBJPROP_TIME2, 시작 시간);

ObjectSet("H4Middle", OBJPROP_TIME1, StartTime+PERIOD_H4*60);

ObjectSet("H4Middle", OBJPROP_PRICE1, HiPrice);

ObjectSet("H4Middle", OBJPROP_PRICE2, LoPrice);

}

ObjectSet("H4Middle", OBJPROP_LEVELCOLOR, H4MiddleColor);

ObjectSet("H4Middle", OBJPROP_FIBOLEVELS,1);

ObjectSet("H4Middle", OBJPROP_FIRSTLEVEL+0,0.500); ObjectSetFiboDescription("H4Middle", 0, "H4 중간 - %$");

ObjectSet("H4Middle", OBJPROP_RAY, true);

ObjectSet("H4Middle", OBJPROP_BACK, true);

ObjectSet("H4Middle", OBJPROP_COLOR, EMPTY);

}

if(D1Mid)

if(ObjectFind("D1Middle") == -1)

ObjectCreate("D1Middle", OBJ_FIBO, 0, D1StartTime, D1HiPrice, D1StartTime+PERIOD_D1*60, D1LoPrice);

또 다른

{

ObjectSet("D1Middle", OBJPROP_TIME2, D1StartTime);

ObjectSet("D1Middle", OBJPROP_TIME1, D1StartTime+PERIOD_D1*60);

ObjectSet("D1Middle", OBJPROP_PRICE1, D1HiPrice);

ObjectSet("D1Middle", OBJPROP_PRICE2, D1LoPrice);

}

ObjectSet("D1Middle", OBJPROP_LEVELCOLOR, D1MiddleColor);

ObjectSet("D1Middle", OBJPROP_FIBOLEVELS,1);

ObjectSet("D1Middle", OBJPROP_FIRSTLEVEL+0,0.500); ObjectSetFiboDescription("D1Middle", 0, "D1 MIDDLE - %$");

ObjectSet("D1Middle", OBJPROP_RAY, true);

ObjectSet("D1Middle", OBJPROP_BACK, true);

ObjectSet("D1Middle", OBJPROP_COLOR, EMPTY);

}

/////////////////////////////////////////가운데////

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

//| 표시기 시작 기능

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

정수 시작()

{

int shift = iBarShift(NULL, PERIOD_D1, 시간[0]) + 1; // H4

HiPrice = iHigh(NULL, PERIOD_H4, 시프트);

LoPrice = iLow(NULL, PERIOD_H4, 시프트);

StartTime = iTime(NULL, PERIOD_H4, 시프트);

D1HiPrice = iHigh(NULL, PERIOD_D1, 시프트);

D1LoPrice = iLow(NULL, PERIOD_D1, 시프트);

D1StartTime = iTime(NULL, PERIOD_D1, 시프트);

if(TimeDayOfWeek(StartTime) == 0/*일요일*/)

{//금요일 높음 및 낮음 추가

HiPrice = MathMax(HiPrice, iHigh(NULL,PERIOD_H4, shift+1));

LoPrice = MathMin(LoPrice, iLow(NULL,PERIOD_H4, shift+1));

D1HiPrice = MathMax(D1HiPrice, iHigh(NULL, PERIOD_D1, shift+1));

D1LoPrice = MathMin(D1LoPrice, iLow(NULL, PERIOD_D1, shift+1));

}

범위 = HiPrice - LoPrice;

D1Range = D1HiPrice - D1LoPrice;

DrawFibo();

반환(0);

}

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

Bellow this 나는 H4 high low mid 용 원본을 첨부합니다.

 

도움을 받고 싶습니다. 델타 스톱을 손절매 로 사용하려고 합니다.

그리고 후행 정지. 첨부 파일은 EA입니다.

이것이 가능합니까?

파일:
 

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

//| 수정됨 Avery T. Horton, Jr. 일명 TheRumpledOne |

//| |

//| |

//|

//

// 구글 검색 "therumpledone mt4"

//

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

//| _Fibo_Hi_Low_Middle.mq4

//| spudfibo의 베이스. Darkkiller의 업그레이드

//: 수정을 도와준 Mladen에게 감사합니다.

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

#속성 표시기_차트_창

외부 int myChartPeriod = 0 ;

extern string note1 = "높은, 중간, 낮은 색상";

외부 색상 HigherColor = DeepSkyBlue;

외부 색상 MiddleColor = 노란색;

외부 색상 LowerColor = HotPink;

extern string note2 = "가운데를 그리시겠습니까?";

extern bool HiLow = true;

extern bool 중간 = true;

이중 HiPrice, LoPrice, 범위;

날짜 시간 시작 시간;

문자열 tChartPeriod, tHigher, tLower, tMiddle ;

정수 초기화()

{

if(myChartPeriod == 0) { myChartPeriod = 기간() ; }

tChartPeriod = TimeFrameToString(myChartPeriod) ;

tHigher = tChartPeriod + "H" ;

tLower = tChartPeriod + "L" ;

tMiddle = tChartPeriod + "M" ;

리턴(0);

}

정수 초기화()

{

ObjectDelete(tHigher);

개체삭제(tLower);

ObjectDelete(tMiddle);

리턴(0);

}

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

//| 무승부

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

int DrawFibo()

{

if(하이로우)

{

if(ObjectFind(tHigher) == -1)

ObjectCreate(tHigher,OBJ_FIBO,0,StartTime,HiPrice+Range,StartTime,HiPrice);

또 다른

{

ObjectSet(tHigher,OBJPROP_TIME2, 시작 시간);

ObjectSet(tHigher,OBJPROP_TIME1, 시작 시간);

ObjectSet(tHigher,OBJPROP_PRICE1,HiPrice+Range);

ObjectSet(tHigher,OBJPROP_PRICE2,HiPrice);

}

ObjectSet(tHigher,OBJPROP_LEVELCOLOR,HigherColor);

ObjectSet(tHigher,OBJPROP_FIBOLEVELS,1);

ObjectSet(tHigher,OBJPROP_FIRSTLEVEL+0,0.0);

ObjectSetFiboDescription(tHigher,0,tChartPeriod+" HIGHER- %$");

ObjectSet(tHigher,OBJPROP_RAY,true);

ObjectSet(tHigher,OBJPROP_BACK,true);

ObjectSet(tHigher,OBJPROP_COLOR,EMPTY);

if(ObjectFind(tLower) == -1)

ObjectCreate(tLower,OBJ_FIBO,0,StartTime,LoPrice-Range,StartTime,LoPrice);

또 다른

{

ObjectSet(tLower,OBJPROP_TIME2, 시작 시간);

ObjectSet(tLower,OBJPROP_TIME1, 시작 시간);

ObjectSet(tLower,OBJPROP_PRICE1,LoPrice-Range);

ObjectSet(tLower,OBJPROP_PRICE2,LoPrice);

}

ObjectSet(tLower,OBJPROP_LEVELCOLOR,LowerColor);

ObjectSet(tLower,OBJPROP_FIBOLEVELS,1);

ObjectSet(tLower,OBJPROP_FIRSTLEVEL+0,0.0);

ObjectSetFiboDescription(tLower,0,tChartPeriod+" LOWER - %$");

ObjectSet(tLower,OBJPROP_RAY,true);

ObjectSet(tLower,OBJPROP_BACK,true);

ObjectSet(tLower,OBJPROP_COLOR,EMPTY);

}

/////////////////////////////////////////가운데//////// ////////////////////

if(중)

if(ObjectFind(tMiddle) == -1)

ObjectCreate(tMiddle,OBJ_FIBO,0,StartTime,HiPrice,StartTime+myChartPeriod*60,LoPrice);

또 다른

{

ObjectSet(tMiddle,OBJPROP_TIME2, 시작 시간);

ObjectSet(tMiddle,OBJPROP_TIME1, StartTime+myChartPeriod*60);

ObjectSet(tMiddle,OBJPROP_PRICE1,HiPrice);

ObjectSet(tMiddle,OBJPROP_PRICE2,LoPrice);

}

ObjectSet(tMiddle,OBJPROP_LEVELCOLOR,MiddleColor);

ObjectSet(tMiddle,OBJPROP_FIBOLEVELS,1);

ObjectSet(tMiddle,OBJPROP_FIRSTLEVEL+0,0.500);

ObjectSetFiboDescription(tMiddle,0,tChartPeriod+" 중간 - %$");

ObjectSet(tMiddle,OBJPROP_RAY,true);

ObjectSet(tMiddle,OBJPROP_BACK,true);

ObjectSet(tMiddle,OBJPROP_COLOR,EMPTY);

}

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

//| 표시기 시작 기능

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

정수 시작()

{

int shift = iBarShift(NULL, myChartPeriod, 시간[0]) + 1; //

고가 = iHigh(NULL,myChartPeriod,shift);

LoPrice = iLow(NULL, myChartPeriod, 시프트);

시작 시간 = iTime(NULL, myChartPeriod, 시프트);

if(TimeDayOfWeek(StartTime)==0/*일요일*/)

{//금요일 높음 및 낮음 추가

HiPrice = MathMax(HiPrice,iHigh(NULL,myChartPeriod,shift+1));

LoPrice = MathMin(LoPrice,iLow(NULL,myChartPeriod,shift+1));

}

범위 = HiPrice-LoPrice;

DrawFibo();

// 주석( "Period_", tChartPeriod ) ;

리턴(0);

}

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

문자열 TimeFrameToString(int tf)

{

문자열 tfs;

스위치(tf) {

사례 PERIOD_M1: tfs="M1" ; 부서지다;

사례 PERIOD_M5: tfs="M5" ; 부서지다;

사례 PERIOD_M15: tfs="M15" ; 부서지다;

사례 PERIOD_M30: tfs="M30" ; 부서지다;

케이스 PERIOD_H1: tfs="H1" ; 부서지다;

사례 PERIOD_H4: tfs="H4" ; 부서지다;

케이스 PERIOD_D1: tfs="D1" ; 부서지다;

사례 PERIOD_W1: tfs="W1" ; 부서지다;

사례 PERIOD_MN1: tfs="MN";

}

반환(tfs);

}

그게 내가 한 방법입니다.

추신: 내 첨부 파일이 삭제되는 이유는 무엇입니까?

파일:
highlower.gif  14 kb
 

MoveStopOnce

안녕하세요, 이 MoveStopOnce 코드가 작동하도록 하려고 하지만 Sell 거래는 코드에 의해 수정되지 않고 Buys만 수정되는 것 같습니다. 문제가 있나요?

//Buys

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(Bid - OrderOpenPrice() >= Point * MoveStopWhenPrice) {

if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) {

OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

[/code]

[code]

//Sells

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(OrderOpenPrice() - Ask >= Point * MoveStopWhenPrice) {

if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) {

OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

 

MoveStopOnce

나는이 문제가 있었다.

다음을 추가해야 한다고 생각합니다.

if (OrderType() == OP_BUY)

그리고 판매 코드에 OP_SELL을 사용합니다.

빅비

 
Big Be:
나는이 문제가 있었다.

다음을 추가해야 한다고 생각합니다.

if (OrderType() == OP_BUY)

그리고 판매 코드에 OP_SELL을 사용합니다.

빅비

알겠습니다. 집에 도착하면 시도해 보겠습니다. 그런데 왜 이미 구매 주문과 함께 작동합니까?

감사해요

사유: