코딩하는 방법? - 페이지 163 1...156157158159160161162163164165166167168169170...347 새 코멘트 Orionis 2009.02.27 20:39 #1621 iCCI 질문 저는 MQL4가 처음이고 이전 CCI 값을 얻으려고 합니다. Shift 값이 1인 iCCI 기능 을 사용해 보았지만 이전 값이 표시되지 않습니다. 현재 값을 변수에 저장하지 않고 어떻게 합니까? CCI가 나아갈 방향을 결정하려고 합니다. 도와주셔서 감사합니다. KennyRogers 2009.02.27 21:08 #1622 코드는 틱 기반이므로 해당 시간에 틱이 없으면 코드는 시간 확인 을 놓치게 됩니다. 지속적으로 실행되는 일종의 루프 없이는 정확한 초까지 얻을 수 있다고 생각하지 않습니다. coach3131 2009.02.28 23:02 #1623 EA 편집에 대한 도움말 이 문제를 해결하려고 합니다... 도와주시겠습니까? MB 거래 - 주식 옵션 선물 Forex 온라인 할인 거래 나는 이것을 바꿨다: OrderSend(Symbol(),OP_SELL,mylotsi, SellPrice,slippage,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,Arrow sColor); 반환(0); 에게: int 티켓 = OrderSend(Symbol(),OP_SELL,mylotsi, SellPrice,slippage,0,0,"MyMEFx EA"+MagicNumber,MagicNumber,0,Arrow sColor); 수면(1500); OrderModify(티켓,OrderOpenPrice(),sl,tp,0,ArrowsColor); ========================================== 다음 오류가 발생합니다. 2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderModify 기능에 대한 유효하지 않은 티켓 2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderSend 오류 131 2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY, H1: OrderModify 오류 4051 ====================== How to code? 코딩 도움말 10포인트 3.mq4 cockeyedcowboy 2009.03.01 15:42 #1624 coach3131: 이 문제를 해결하려고 합니다... 도와주시겠습니까? MB 거래 - 주식 옵션 선물 Forex 온라인 할인 거래 나는 이것을 바꿨다: OrderSend(Symbol(),OP_SELL,mylotsi, SellPrice,slippage,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,Arrow sColor); 반환(0); 에게: int 티켓 = OrderSend(Symbol(),OP_SELL,mylotsi, SellPrice,slippage,0,0,"MyMEFx EA"+MagicNumber,MagicNumber,0,Arrow sColor); 수면(1500); OrderModify(티켓,OrderOpenPrice(),sl,tp,0,ArrowsColor); ========================================== 다음 오류가 발생합니다. 2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderModify 기능에 대한 유효하지 않은 티켓 2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderSend 오류 131 2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY, H1: OrderModify 오류 4051 ====================== 문제는 주문 전송 명세서의 로트 크기(볼륨)에 있습니다. 오류 때문에 -1을 반환합니다. 티켓 검증 가능에는 ordermodify 함수로 다른 오류를 유발한 -1의 오류 플래그가 포함된 티켓 번호가 포함되어 있지 않습니다. 허용 가능한 값을 포함하도록 로트 크기 변수 mylotsi를 수정해야 합니다. 두 번째로 ordermodify 루틴을 호출하기 전에 티켓 변수의 반환 값에 오류 플래그가 포함되어 있지 않은지 확인해야 합니다. 킷 Sam 2009.03.05 21:20 #1625 EA 최대 위치 누구든지 이 EA에 대해 최대 위치를 추가할 수 있습니까? 또는 한 위치만 실행하도록 하시겠습니까? 미리 감사합니다 파일: reversal_ea_mt4_eur_jpy_works_fine.mq4 6 kb Roger09 2009.03.06 20:51 #1626 당신은 더 나은 사용 MathAbs(NormalizeDouble(Bid,4)-NormalizeDouble(pivot,4))<Delta*Point, 여기서 델타=2...5 MiniMe 2009.03.07 13:02 #1627 jdun: 누군가 정지 손실 및 tp에 대한 코드를 말해 줄 수 있습니까? 이 EA에 추가해야 합니다. 이 숨겨진 SL과 TP int TakeProfit=20; // 20 pips take profit int StopLoss =40; // 40 pips stoploss int Slippage = 3; int MagicNumber=1; int i; int start(){ //----- exit @ TP if((ScanTrades()>=1)&& (ProfitInPips()>=TakeProfit)){ //----- This part will close all open orders and delete pending trades for(i = OrdersTotal()-1; i >=0; i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if (OrderSymbol() == Symbol()&& OrderMagicNumber()==MagicNumber ) { if (OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Plum); if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Plum); if (OrderType() == OP_SELLLIMIT) OrderDelete(OrderTicket()); if (OrderType() == OP_BUYLIMIT) OrderDelete(OrderTicket()); if (OrderType() == OP_BUYSTOP) OrderDelete(OrderTicket()); if (OrderType() == OP_SELLSTOP) OrderDelete(OrderTicket()); } } } //------exit @ SL if((ScanTrades()>=1)&& (ProfitInPips()<= -StopLoss)){ //----- This part will close all open orders and delete pending trades for(i = OrdersTotal()-1; i >=0; i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if (OrderSymbol() == Symbol()&& OrderMagicNumber()==MagicNumber ) { if (OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Plum); if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Plum); if (OrderType() == OP_SELLLIMIT) OrderDelete(OrderTicket()); if (OrderType() == OP_BUYLIMIT) OrderDelete(OrderTicket()); if (OrderType() == OP_BUYSTOP) OrderDelete(OrderTicket()); if (OrderType() == OP_SELLSTOP) OrderDelete(OrderTicket()); } } } return (0); } //----------- Call functions int ScanTrades() { int Tot = OrdersTotal(); int Numb = 0; for(int cnt=0; cnt<=Tot-1; cnt++) { OrderSelect(cnt, SELECT_BY_POS); if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) Numb++; } return(Numb); } double ProfitInPips() { RefreshRates(); double Prof=0; int i; int totalOrders=OrdersTotal(); for(i=0;i<totalOrders;i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()==MagicNumber) { if(OrderType()==0) { Prof+=(MarketInfo(OrderSymbol(),MODE_BID)-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT); } if(OrderType()==1) { Prof+=(OrderOpenPrice()-MarketInfo(OrderSymbol(),MODE_ASK))/MarketInfo(OrderSymbol(),MODE_POINT); } } } return(Prof); } How to code? Stop Loss Hiding [WARNING CLOSED!] Any newbie MiniMe 2009.03.07 13:07 #1628 매수 주문과 매도 주문 이 몇 개 있다고 가정해 보겠습니다. 내가 원하는 것은 : - 열린 거래의 손익분기점보다 5핍 더 높은 모든 거래 "바구니"를 종료합니다. 첫 번째 for 루프에서 하려고 하는 것은 열린 거래 + 스왑의 가치를 찾아 그것을 핍으로 변환하는 것입니다. 이것이 제가 막힌 부분입니다. 몇 가지 아이디어를 시도했지만 막 다른 골목에 도달했습니다. 문제가 첫 번째 for 문에 있다는 것을 알고 있지만 해결할 수 없습니다. 어떤 도움도 매우 적절합니다. SymbolPL = 0; OrdLots = 0; Equity = 0; MinPro = 5; for(i = 0; i < OrdersTotal(); i++) {OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {if(OrderType() == OP_BUY) OrdLots += OrderLots(); if(OrderType() == OP_SELL) OrdLots -= OrderLots(); Equity += OrderProfit() + OrderSwap(); } } MinPro= MathRound (MathAbs(Equity /OrdLots)+MinPro); //--- Count the open trades int i; int count=0; for(i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()==MagicNumber && OrderType()<2) { count++; } } //--- find the profit in pips of the open trades RefreshRates(); double profits=0,openPrice=0,points=0; string sym=""; int i; int totalOrders=OrdersTotal(); for(i=0;i<totalOrders;i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()==MagicNumber) { sym=OrderSymbol(); openPrice=OrderOpenPrice(); if(OrderType()==0) { profits+=(MarketInfo(sym,MODE_BID)-openPrice)/MarketInfo(sym,MODE_POINT); } if(OrderType()==1) { profits+=(OrderOpenPrice()-MarketInfo(sym,MODE_ASK))/MarketInfo(sym,MODE_POINT); } } } //--- Close when the open trades are 5 pips more than the breakeven price if (count>1 && profits>MinPro ) { for(i = OrdersTotal()-1; i >=0; i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if (OrderSymbol() == Symbol()&& OrderMagicNumber()==MagicNumber ) { OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Plum); } } } How to code? Ask! 묻다! ralphronnquist 2009.03.07 20:28 #1629 다음과 같이 계산되는 "equity_per_lotpoint" 상수를 사용할 수 있다고 생각합니다. double equity_per_lotpoint = MarketInfo( Symbol(), MODE_TICKVALUE ) / MarketInfo( Symbol(), MODE_TICKSIZE ); [/PHP] and then you'd have what you need after the first loop, with: [PHP]if ( Equity > 5 * equity_per_lotpoint * MathAbs( OrdLots ) ) { ... MiniMe 2009.03.07 21:02 #1630 Ralph에게 감사하지만 스왑을 놓치고 주문 결정을 마칠 때 스왑 손익을 포함하고 싶습니다. 1...156157158159160161162163164165166167168169170...347 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
iCCI 질문
저는 MQL4가 처음이고 이전 CCI 값을 얻으려고 합니다. Shift 값이 1인 iCCI 기능 을 사용해 보았지만 이전 값이 표시되지 않습니다. 현재 값을 변수에 저장하지 않고 어떻게 합니까? CCI가 나아갈 방향을 결정하려고 합니다.
도와주셔서 감사합니다.
코드는 틱 기반이므로 해당 시간에 틱이 없으면 코드는 시간 확인 을 놓치게 됩니다. 지속적으로 실행되는 일종의 루프 없이는 정확한 초까지 얻을 수 있다고 생각하지 않습니다.
EA 편집에 대한 도움말
이 문제를 해결하려고 합니다... 도와주시겠습니까?
MB 거래 - 주식 옵션 선물 Forex 온라인 할인 거래
나는 이것을 바꿨다:
OrderSend(Symbol(),OP_SELL,mylotsi, SellPrice,slippage,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,Arrow sColor);
반환(0);
에게:
int 티켓 = OrderSend(Symbol(),OP_SELL,mylotsi, SellPrice,slippage,0,0,"MyMEFx EA"+MagicNumber,MagicNumber,0,Arrow sColor);
수면(1500);
OrderModify(티켓,OrderOpenPrice(),sl,tp,0,ArrowsColor);
==========================================
다음 오류가 발생합니다.
2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderModify 기능에 대한 유효하지 않은 티켓
2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderSend 오류 131
2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY, H1: OrderModify 오류 4051
======================
이 문제를 해결하려고 합니다... 도와주시겠습니까?
MB 거래 - 주식 옵션 선물 Forex 온라인 할인 거래
나는 이것을 바꿨다:
OrderSend(Symbol(),OP_SELL,mylotsi, SellPrice,slippage,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,Arrow sColor);
반환(0);
에게:
int 티켓 = OrderSend(Symbol(),OP_SELL,mylotsi, SellPrice,slippage,0,0,"MyMEFx EA"+MagicNumber,MagicNumber,0,Arrow sColor);
수면(1500);
OrderModify(티켓,OrderOpenPrice(),sl,tp,0,ArrowsColor);
==========================================
다음 오류가 발생합니다.
2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderModify 기능에 대한 유효하지 않은 티켓
2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderSend 오류 131
2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY, H1: OrderModify 오류 4051
======================문제는 주문 전송 명세서의 로트 크기(볼륨)에 있습니다. 오류 때문에 -1을 반환합니다. 티켓 검증 가능에는 ordermodify 함수로 다른 오류를 유발한 -1의 오류 플래그가 포함된 티켓 번호가 포함되어 있지 않습니다. 허용 가능한 값을 포함하도록 로트 크기 변수 mylotsi를 수정해야 합니다. 두 번째로 ordermodify 루틴을 호출하기 전에 티켓 변수의 반환 값에 오류 플래그가 포함되어 있지 않은지 확인해야 합니다.
킷
EA 최대 위치
누구든지 이 EA에 대해 최대 위치를 추가할 수 있습니까?
또는 한 위치만 실행하도록 하시겠습니까?
미리 감사합니다
당신은 더 나은 사용
MathAbs(NormalizeDouble(Bid,4)-NormalizeDouble(pivot,4))<Delta*Point,
여기서 델타=2...5
누군가 정지 손실 및 tp에 대한 코드를 말해 줄 수 있습니까? 이 EA에 추가해야 합니다.
이 숨겨진 SL과 TP
int TakeProfit=20; // 20 pips take profit
int StopLoss =40; // 40 pips stoploss
int Slippage = 3;
int MagicNumber=1;
int i;
int start(){
//----- exit @ TP
if((ScanTrades()>=1)&& (ProfitInPips()>=TakeProfit)){
//----- This part will close all open orders and delete pending trades
for(i = OrdersTotal()-1; i >=0; i--)
{ OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol() == Symbol()&& OrderMagicNumber()==MagicNumber )
{
if (OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Plum);
if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Plum);
if (OrderType() == OP_SELLLIMIT) OrderDelete(OrderTicket());
if (OrderType() == OP_BUYLIMIT) OrderDelete(OrderTicket());
if (OrderType() == OP_BUYSTOP) OrderDelete(OrderTicket());
if (OrderType() == OP_SELLSTOP) OrderDelete(OrderTicket());
}
}
}
//------exit @ SL
if((ScanTrades()>=1)&& (ProfitInPips()<= -StopLoss)){
//----- This part will close all open orders and delete pending trades
for(i = OrdersTotal()-1; i >=0; i--)
{ OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol() == Symbol()&& OrderMagicNumber()==MagicNumber )
{
if (OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Plum);
if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Plum);
if (OrderType() == OP_SELLLIMIT) OrderDelete(OrderTicket());
if (OrderType() == OP_BUYLIMIT) OrderDelete(OrderTicket());
if (OrderType() == OP_BUYSTOP) OrderDelete(OrderTicket());
if (OrderType() == OP_SELLSTOP) OrderDelete(OrderTicket());
}
}
}
return (0);
}
//----------- Call functions
int ScanTrades()
{
int Tot = OrdersTotal();
int Numb = 0;
for(int cnt=0; cnt<=Tot-1; cnt++)
{
OrderSelect(cnt, SELECT_BY_POS);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) Numb++;
}
return(Numb);
}
double ProfitInPips()
{
RefreshRates();
double Prof=0;
int i;
int totalOrders=OrdersTotal();
for(i=0;i<totalOrders;i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()==MagicNumber)
{
if(OrderType()==0)
{
Prof+=(MarketInfo(OrderSymbol(),MODE_BID)-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT);
}
if(OrderType()==1)
{
Prof+=(OrderOpenPrice()-MarketInfo(OrderSymbol(),MODE_ASK))/MarketInfo(OrderSymbol(),MODE_POINT);
}
}
}
return(Prof);
}
매수 주문과 매도 주문 이 몇 개 있다고 가정해 보겠습니다.
내가 원하는 것은 :
- 열린 거래의 손익분기점보다 5핍 더 높은 모든 거래 "바구니"를 종료합니다.
첫 번째 for 루프에서 하려고 하는 것은 열린 거래 + 스왑의 가치를 찾아 그것을 핍으로 변환하는 것입니다. 이것이 제가 막힌 부분입니다.
몇 가지 아이디어를 시도했지만 막 다른 골목에 도달했습니다. 문제가 첫 번째 for 문에 있다는 것을 알고 있지만 해결할 수 없습니다. 어떤 도움도 매우 적절합니다.
SymbolPL = 0;
OrdLots = 0;
Equity = 0;
MinPro = 5;
for(i = 0; i < OrdersTotal(); i++)
{OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{if(OrderType() == OP_BUY) OrdLots += OrderLots();
if(OrderType() == OP_SELL) OrdLots -= OrderLots();
Equity += OrderProfit() + OrderSwap();
}
}
MinPro= MathRound (MathAbs(Equity /OrdLots)+MinPro);
//--- Count the open trades
int i;
int count=0;
for(i=0;i<OrdersTotal();i++)
{ if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()==MagicNumber && OrderType()<2)
{ count++;
}
}
//--- find the profit in pips of the open trades
RefreshRates();
double profits=0,openPrice=0,points=0;
string sym="";
int i;
int totalOrders=OrdersTotal();
for(i=0;i<totalOrders;i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()==MagicNumber)
{
sym=OrderSymbol();
openPrice=OrderOpenPrice();
if(OrderType()==0)
{
profits+=(MarketInfo(sym,MODE_BID)-openPrice)/MarketInfo(sym,MODE_POINT);
}
if(OrderType()==1)
{
profits+=(OrderOpenPrice()-MarketInfo(sym,MODE_ASK))/MarketInfo(sym,MODE_POINT);
}
}
}
//--- Close when the open trades are 5 pips more than the breakeven price
if (count>1 && profits>MinPro )
{
for(i = OrdersTotal()-1; i >=0; i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol() == Symbol()&& OrderMagicNumber()==MagicNumber )
{
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Plum);
}
}
}
다음과 같이 계산되는 "equity_per_lotpoint" 상수를 사용할 수 있다고 생각합니다.
[/PHP]
and then you'd have what you need after the first loop, with:
[PHP]if ( Equity > 5 * equity_per_lotpoint * MathAbs( OrdLots ) ) { ...
Ralph에게 감사하지만 스왑을 놓치고 주문 결정을 마칠 때 스왑 손익을 포함하고 싶습니다.