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

 

알 수 없는 하위 창 번호

안녕하세요 코더 여러분

누구든지 iCustom 호출로 이 문제에 대한 해결책을 얻었습니다. 제가 생각할 수 있는 모든 것을 시도했지만 여전히 전문가 탭에 동일한 메시지가 표시됩니다.

ObjectCreate 함수 에 대해 알 수 없는 하위 창 번호 -1

감사합니다

 

표시기에서 하위 창 호출 제거

cja:
안녕하세요 코더 여러분

누구든지 iCustom 호출로 이 문제에 대한 해결책을 얻었습니다. 제가 생각할 수 있는 모든 것을 시도했지만 여전히 전문가 탭에 동일한 메시지가 표시됩니다.

ObjectCreate 함수에 대해 알 수 없는 하위 창 번호 -1

감사합니다

안녕하세요 CJA입니다.

이 문제를 해결하는 데 사용하는 솔루션이 있습니다.

EA가 iCustom에서 호출하는 표시기는 개체를 그릴 하위 창을 찾으려고 합니다.

대부분의 경우 지표는 아무것도 그릴 필요가 없으며 지표 값을 EA에 제공하기만 하면 됩니다.

내 솔루션은 표시기의 복사본을 만들고 하위 창 호출과 개체 그리기 루틴을 삭제하는 것입니다.

이렇게 하면 하위 창 오류가 제거되고 EA가 더 빠르게 실행됩니다.

그런 다음 EA의 iCustom 문에서 이 새로운 지표 이름을 사용하십시오.

아마도 더 나은 코드 솔루션이 있을 것이라고 확신하지만 이것은 저에게 효과적입니다.

도움이 되었기를 바랍니다,

로버트

 

iCustom 하위 창 오류

cosmiclifeform:
안녕하세요 CJA입니다.

이 문제를 해결하는 데 사용하는 솔루션이 있습니다.

EA가 iCustom에서 호출하는 표시기는 개체를 그릴 하위 창을 찾으려고 합니다.

대부분의 경우 지표는 아무것도 그릴 필요가 없으며 지표 값을 EA에 제공하기만 하면 됩니다.

내 솔루션은 표시기의 복사본을 만들고 하위 창 호출과 개체 그리기 루틴을 삭제하는 것입니다.

이렇게 하면 하위 창 오류가 제거되고 EA가 더 빠르게 실행됩니다.

그런 다음 EA의 iCustom 문에서 이 새로운 지표 이름을 사용하십시오.

아마도 더 나은 코드 솔루션이 있을 것이라고 확신하지만 이것은 저에게 효과적입니다.

도움이 되었기를 바랍니다,

로버트

로버트에게 감사합니다. 하지만 귀하의 제안은 효과가 있지만 그물에서 검색을 수행했지만 많은 질문과 답변이 없는 작동하거나 의미가 있는 솔루션을 찾지 못했지만 다른 방법이 있을 것이라고 생각합니다. 다시 한 번 도움을 주셔서 감사합니다.

감사합니다

 

CJA

그냥 제안: 원하는 창 번호를 전달하기 위해 매개변수 (iCustom()로 호출될 때)를 사용하지 않는 이유는 무엇입니까? if (ParameterWindowID>=0) if (ParameterWindowID>=0) then it from iCustom else do some default code .

그렇게하면 다른 코드에서 호출 된 경우에도 개체를 강제로 그릴 수 있고 올바른 위치에 개체를 그릴 수 있습니다.

 

코딩에 대한 도움말

안녕 얘들아.

이메일 경고 보고서에서 BOLD textFONTtype을 사용할 수 있는지 알려주실 수 있나요? 예일 때 이것을 어떻게 코딩할 수 있습니까?

도움을 주셔서 감사합니다.

 
codersguru:
CSV 파일로 저장하는 방법을 말씀하시는 건가요?

이것을 확인하십시오:

도구 - .csv 리더

안녕하세요, 구루님,

귀하의 웹사이트에 이 dll을 다운로드할 수 있는 곳이 있습니까? 나는 이것이 훌륭한 도구라고 생각하고 당신이 나보다 더 잘 쓸 수 있다고 확신하므로 나는 그것에 대해 신경 쓰지 않을 것입니다. 미리 감사드립니다.

등록해야 합니까? 이것은 다운로드 섹션 아래에 있지만 아무 것도 다운로드하는 방법을 알 수 없었습니다.

 

빠른 EA 수정

안녕,

도움이 필요합니다. 아래 코드를 변경하려고 시도했지만 EA가 MT4를 계속 충돌시켰습니다.

현재 막대(주문이 실행된 막대)가 닫힐 때 주문을 닫고 싶습니다. 기본적으로 하나의 바를 거래합니다.

이것은 원래 코드이며 신호에서 신호로 거래됩니다.

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

//| Signal Begin(Exit Buy) |

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

if (signaldown!=EMPTY_VALUE&&signaldown!=0) Order = SIGNAL_CLOSEBUY;

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

//| 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(UseTrailingStop && 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) |

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

if (signalup!=EMPTY_VALUE&&signalup!=0) Order = SIGNAL_CLOSESELL;

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

//| 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(UseTrailingStop && 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 (timeprev!=Time[0]){

// timeprev = Time[0];

if (signalup!=EMPTY_VALUE&&signalup!=0)

{

Order = SIGNAL_BUY;

}

if (signaldown!=EMPTY_VALUE&&signaldown!=0){

Order = SIGNAL_SELL;

}

// }

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

//| Signal End |

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

//Buy

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (100 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) 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() < (100 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) 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);

}

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

아무도 나를 도울 수 있습니까?

 

나는 또한이 코드를 찾았습니다.

if(data!=iTime(Symbol(),0,0))

{

if(signalup!=EMPTY_VALUE&&signalup!=0)

{

if(openpos()>0)

{

for(i=0;i<OrdersTotal();i++)

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

{

if(OrderType()==OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==mn)

{

if(OrderClose(OrderTicket(),lots,Ask,slip))

Print("short was closed");

}

}

}

Print("try open long");

Print(Symbol());

nt=OrderSend(Symbol(),OP_BUY,lots,Ask,slip,0,0,"ab",mn,0,Green);

if(nt>0)

Print("long order was opened");

}

if(signaldown!=EMPTY_VALUE&&signaldown!=0)

{

if(openpos()>0)

{

for(i=0;i<OrdersTotal();i++)

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

{

if(OrderType()==OP_BUY&&OrderSymbol()==Symbol()&&OrderMagicNumber()==mn)

{

if(OrderClose(OrderTicket(),lots,Bid,slip))

Print("long was closed");

}

}

}

Print("try open short");

Print(Symbol());

nt=OrderSend(Symbol(),OP_SELL,lots,Bid,slip,0,0,"ab",mn,0,Red);

if(nt>0)

Print("short was opened");

}

data=iTime(Symbol(),0,0);

}

//----

//----

return(0);

}

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

int openpos()

{

int j=0;

int i,n;

n=OrdersTotal();

for(i=0;i<n;i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)

if(OrderSymbol()==Symbol()&&OrderMagicNumber()==mn&&(OrderType()==OP_SELL||OrderType()==OP_BUY))

j++;

}

return(j);

어떤 전문가가 어느 것이 더 잘 쓰여졌는지 말해 줄 수 있습니까?

 

페어의 모든 주문에 대한 손익분기점(마법)

안녕하세요 여러분,

나는 마법으로 쌍의 모든 주문(구매 및 판매)을 수집하고 싶고 손익분기점에 도달하면 모든 주문을 닫아야 합니다.

어떤 지침을 매우 환영합니다, 감사합니다

extern bool PairBreakeven=true;// 동일한 페어/매직의 모든 페어당 손익분기점

extern double Pairbreakevengain=6;// 손익분기점을 활성화하는 데 필요한 핍의 이득

extern double Pairbreakeven=3;// 손익분기점, 주문 마감, 3핍 이익/슬리피지

더블 페어무브브레이크벤;

if(PairBreakeven==true){

if(Pairbreakevengain>0)Pairmovebreakeven(Pairbreakevengain,Pairbreakeven);

CloseBuyOrders(매직);

CloseSellOrders(매직);

}

무효 Pairmovebreakeven(더블 Pairbreakevengain,더블 Pairbreakeven){

새로 고침 비율();

if(OrdersTotal()>0){

for(int i=OrdersTotal();i>=0;i++){

주문 선택(i,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()==Symbol() && OrderMagicNumber()==매직 ){

반품;

}

}

}

}

int CloseBuyOrders(int Magic){ //op_sell은 비슷합니다.

정수 합계=OrdersTotal();

for(int cnt=total-1;cnt>=0;cnt--){

주문 선택(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderMagicNumber()==매직 && OrderSymbol()==Symbol()){

if(주문유형()==OP_BUY){

OrderClose(OrderTicket(),OrderLots(),Bid,3*mt);

}

}

}

반환(0);

}

 

3차원 이상의 ArraySort.

전문가가 이에 대해 도움을 줄 수 있습니까?

1차원 또는 2차원 배열에 대해 arraysort를 성공적으로 사용해 보았습니다. 하지만 3차원에서 막혔다. 내가 아는 한 arraysort는 정렬을 위해 첫 번째 열만 사용합니다. 누구든지 3차원 이상으로 이 배열 정렬을 해결하는 방법에 대해 조언할 수 있습니까?

bool Restart = true;

double arraystore[20][20][20];

double ArrayActual[20] = {1.23,3.65,0.02,5.44,0.92,0.11,1.21,999.0,555.5,0.0001,44.221,1.01,0.002};

void init()

{

if (Restart == true)

{

Go();

Restart = false;

}

}

void start()

{

}

void Go()

{

for (int a = 1; a<=3; a++)

{

for (int b = 1; b<=6; b++)

{

int c = b+ (a-1)*6;

arraystore[a][0] = ArrayActual[c];

arraystore[a][1] = a;

arraystore[a][2] = b +a;

Print ( arraystore[a][0] + " . " + arraystore[a][1] + " . " + arraystore[a][2]);

}

}

ArraySort(arraystore,WHOLE_ARRAY,1,MODE_DESCEND);

for ( a = 1; a<=3; a++)

{

for ( b = 1; b<=6; b++)

{

Print ( arraystore[a][0] + " . " + arraystore[a][1] + " . " + arraystore[a][2]);

}

}

}
사유: