[ARCHIVE!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 4. - 페이지 123 1...116117118119120121122123124125126127128129130...633 새 코멘트 [삭제] 2012.05.13 18:36 #1221 후행 정지 및 손익분기점 출력을 추가할 위치는 어디입니까? 그리고 보증금이 증가하면 무언가가 많이 증가하지 않습니다. ////////////////////////////////////////////////////// / ///////////////////////////////////////////////////// // /////////////////////////////////////////////////// /// //////////// int Buy(int StopLoss = 0, int TakeProfit = 0, Double Lot = 0) { 정수 티켓 = 0; 이중 SL = 0; 이중 TP = 0; 이중 볼륨 로트 = 0; 새로 고침(); if (스톱로스 != 0) 에스엘 = NormalizeDouble (Bid-StopLoss*Point, Digits); if (이익 실현 != 0) TP = NormalizeDouble(Ask+TakeProfit*Point, Digits); 경우 (많은 == 0) VolumeLot = GetLot(); 또 다른 볼륨 로트 = 로트; 티켓 = OrderSend(Symbol(), OP_BUY, VolumeLot, NormalizeDouble(Ask, Digits), 20, SL, TP, NULL, AccountNumber(), 0, 녹색); if (티켓 == -1) { 반환(GetLastError()); } 또 다른 { 반환(티켓); } } int Sell(int StopLoss = 0, int TakeProfit = 0, Double Lot = 0) { 정수 티켓 = 0; 이중 SL = 0; 이중 TP = 0; 이중 볼륨 로트 = 0; 새로 고침(); if (스톱로스 != 0) 에스엘 = NormalizeDouble(Ask+StopLoss*Point, Digits); if (이익 실현 != 0) TP = NormalizeDouble(Bid-TakeProfit*Point, Digits); 경우 (많은 == 0) VolumeLot = GetLot(); 또 다른 볼륨 로트 = 로트; 티켓 = OrderSend(Symbol(), OP_SELL, VolumeLot, NormalizeDouble(Bid, Digits), 20, SL, TP, NULL, AccountNumber(), 0, Red); if (티켓 == -1) 반환(GetLastError()); 또 다른 반환(티켓); } 더블 GetLot() { 인트 로트; if (AccountBalance()>=300) lot=0.01; if (AccountBalance()>=500) lot=0.02; if (AccountBalance()>=800) lot=0.03; 반환(로트); } [ARCHIVE!] Any rookie question, 포럼을 어지럽히 지 않도록 [ARCHIVE] 포럼을 어지럽히 지 Alekseu Fedotov 2012.05.13 20:13 #1222 mahla : 후행 정지 및 손익분기점 출력을 추가할 위치는 어디입니까? 그리고 보증금이 증가하면 무언가가 많이 증가하지 않습니다. ////////////////////////////////////////////////////// / ///////////////////////////////////////////////////// // /////////////////////////////////////////////////// /// //////////// 고문에서 //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- //---- return ( 0 ); } //+------------------------------------------------------------------+ 로트증가기능...... 아마 바꾸는게 나을듯 예시: extern double Lots = 0.1 ; extern double MaximumRisk = 0.02 ; extern double DecreaseFactor = 3 ; ////// //+------------------------------------------------------------------+ //| Calculate optimal lot size | //+------------------------------------------------------------------+ double LotsOptimized() { double lot=Lots; int orders=HistoryTotal(); // history orders total int losses= 0 ; // number of losses orders without a break //---- select lot size lot= NormalizeDouble ( AccountFreeMargin ()*MaximumRisk/ 1000.0 , 1 ); //---- calcuulate number of losses orders without a break if (DecreaseFactor> 0 ) { for ( int i=orders- 1 ;i>= 0 ;i--) { if ( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)==false) { Print ( "Error in history!" ); break ; } if ( OrderSymbol ()!= Symbol () || OrderType ()>OP_SELL) continue ; //---- if ( OrderProfit ()> 0 ) break ; if ( OrderProfit ()< 0 ) losses++; } if (losses> 1 ) lot= NormalizeDouble (lot-lot*losses/DecreaseFactor, 1 ); } //---- return lot size if (lot< 0.1 ) lot= 0.1 ; return (lot); } 이동 평균 .mq4 확인 [삭제] 2012.05.14 00:11 #1223 가격 가치가 아니라 모멘텀 가치를 위해 구축된 EA에서 볼린저 밴드 를 사용하는 방법을 알려주실 수 있습니까? 나는 다음과 같이 시도했다 : BandOPeriodT - 외부 변수, 볼린저 밴드 기간. MomentumPeriodT - 각각 운동량 기간입니다. BandOBBottom=iBands(NULL,0,BandOPeriodT,1,0,iMomentum(NULL,0,MomentumPeriodT,PRICE_OPEN,0),MODE_LOWER,0); 또한 다음과 같이: MomO = iMomentum(NULL,0,MomentumPeriodT,PRICE_OPEN,0); - 모멘텀 값을 반환하는 내부 변수 BandOBBottom=iBands (NULL,0,BandOPeriodT,1,0, MomO ,MODE_LOWER,0); - 변수의 값은 이전 변수의 값에 대한 더 낮은 볼린저 밴드의 값을 반환해야 합니다. 그러나 MODE_LOWER가 변수의 LOWER 볼린저 밴드 값을 얻는다는 것을 올바르게 이해하고 있습니까? 그렇지 않다면 어떻게 얻습니까? [ARCHIVE!] Any rookie question, 묻다! 코딩 도움말 Роман 2012.05.14 00:28 #1224 Ovari : 가격 가치가 아니라 모멘텀 가치를 위해 구축된 EA에서 볼린저 밴드를 사용하는 방법을 알려주실 수 있습니까? 나는 다음과 같이 시도했다 : BandOPeriodT - 외부 변수, 볼린저 밴드 기간. MomentumPeriodT - 각각 운동량 기간입니다. BandOBBottom=iBands(NULL,0,BandOPeriodT,1,0,iMomentum(NULL,0,MomentumPeriodT,PRICE_OPEN,0),MODE_LOWER,0); 또한 다음과 같이: MomO = iMomentum(NULL,0,MomentumPeriodT,PRICE_OPEN,0); - 모멘텀 값을 반환하는 내부 변수 BandOBBottom=iBands (NULL,0,BandOPeriodT,1,0, MomO ,MODE_LOWER,0); - 변수의 값은 이전 변수의 값에 대한 더 낮은 볼린저 밴드의 값을 반환해야 합니다. 그러나 MODE_LOWER가 변수의 LOWER 볼린저 밴드 값을 얻는다는 것을 올바르게 이해하고 있습니까? 그렇지 않다면 어떻게 얻습니까? 예고편 보기 - 집에서 RSI용 밴드 있음 - Momentum 에 대해서만 동일한 방식으로 모든 작업을 수행하십시오. 설명 - 로그에서 - 시작 부분의 코드를 참조하십시오. 파일: ft_bollingerbandscrsiasar.mq4 6 kb [삭제] 2012.05.14 01:29 #1225 감사합니다. 그렇지 않으면 저는 프로그래머가 아닌 매우 초보자입니다. :) Boris 2012.05.14 15:37 #1226 안녕하세요! 도와주세요! PVT 표시기를 사용해보고 싶습니다. double PVT = iCustom ( NULL , 240 , "PVT" , PRICE_CLOSE , 1 , 1 ) 말해 주세요. 무엇이 빠졌습니까? 로그에 쓰기: 2012.05.14 19:34:46 EURUSD,H4에서 'C:\Program Files\Alpari NZ MT4\experts\indicators\PVT.ex4' 파일을 열 수 없습니다. 고맙습니다! alex 2012.05.14 17:44 #1227 mahla : 후행 정지 및 손익분기점 출력을 추가할 위치는 어디입니까? 그리고 보증금이 증가하면 무언가가 많이 증가하지 않습니다. ////////////////////////////////////////////////////// / ///////////////////////////////////////////////////// // /////////////////////////////////////////////////// /// //////////// int Buy(int StopLoss = 0, int TakeProfit = 0, Double Lot = 0) { 정수 티켓 = 0; 이중 SL = 0; 이중 TP = 0; 이중 볼륨 로트 = 0; 새로 고침(); if (스톱로스 != 0) 에스엘 = NormalizeDouble(Bid-StopLoss*Point, Digits); if (이익 실현 != 0) TP = NormalizeDouble(Ask+TakeProfit*Point, Digits); 경우 (많은 == 0) VolumeLot = GetLot(); 또 다른 볼륨 로트 = 로트; 티켓 = OrderSend(Symbol(), OP_BUY, VolumeLot, NormalizeDouble(Ask, Digits), 20, SL, TP, NULL, AccountNumber(), 0, 녹색); if (티켓 == -1) { 반환(GetLastError()); } 또 다른 { 반환(티켓); } } int Sell(int StopLoss = 0, int TakeProfit = 0, Double Lot = 0) { 정수 티켓 = 0; 이중 SL = 0; 이중 TP = 0; 이중 볼륨 로트 = 0; 새로 고침(); if (스톱로스 != 0) 에스엘 = NormalizeDouble(Ask+StopLoss*Point, Digits); if (이익 실현 != 0) TP = NormalizeDouble(Bid-TakeProfit*Point, Digits); 경우 (많은 == 0) VolumeLot = GetLot(); 또 다른 볼륨 로트 = 로트; 티켓 = OrderSend(Symbol(), OP_SELL, VolumeLot, NormalizeDouble(Bid, Digits), 20, SL, TP, NULL, AccountNumber(), 0, Red); if (티켓 == -1) 반환(GetLastError()); 또 다른 반환(티켓); } 더블 GetLot() { 인트 로트; if (AccountBalance()>=300) lot=0.01; if (AccountBalance()>=500) lot=0.02; if (AccountBalance()>=800) lot=0.03; 반환(로트); } 우리는 열린 위치가 이미 선택되었다고 가정하고 이 위치가 열려 있음을 확실히 알고 있습니다. 전문가가 부착된 기호로. 또한 후행 중지의 값을 가정합니다. in pips는 TrailingStop 변수에 포함됩니다. int err; if ( OrderType () == OP_BUY) { // позиция на покупку if ((Bid- OrderOpenPrice ())>=(TrailingStop* Point )) { // выставляем Stop Loss if ( OrderModify ( OrderTicket (), OrderOpenPrice (), Bid-TrailingStop* Point , OrderTakeProfit (), 0 )) Print ( "#" , OrderTicket (), ": trailing stop " , Bid-TrailingStop* Point ); else { err = GetLastError (); Print ( "#" , OrderTicket (), ": trailing stop error " , err); } } } else { // позиция на продажу if (( OrderOpenPrice ()-Ask)>=(TrailingStop* Point )) { // выставляем Stop Loss if ( OrderModify ( OrderTicket (), OrderOpenPrice (), Ask+TrailingStop* Point , OrderTakeProfit (), 0 )) Print ( "#" , OrderTicket (), ": trailing stop " , Ask+TrailingStop* Point ); else { err = GetLastError (); Print ( "#" , OrderTicket (), ": trailing stop error " , err); } } } OrderProfit() 함수는 OrderSelect() 함수를 사용하여 선택한 주문에 대한 이익을 반환합니다. 마감된 위치에서 받은 이익을 계산하려고 한다고 가정해 보겠습니다. int profit = 0 ; int pos; for ( pos = 0 ; pos<HistoryTotal(); pos++ ) { // выделим позицию if ( OrderSelect (pos, SELECT_BY_POS, MODE_HISTORY) == true) { // это не отложенный ордер? if ( OrderType () <= OP_SELL) profit += OrderProfit (); } else Print ( "Ошибка " , GetLastError (), " при выделении ордера " , OrderTicket ()); } Print ( "Суммарный профит по закрытым позициям = " , profit); 모든 마감된 위치에 대한 이익을 계산하는 전체 코드는 다음과 같습니다. 오늘 열려있는 것은 다음과 같습니다. //---- вычислим начало дня - переменная day_start int c_time = CurTime(); datetime day_start; day_start=c_time- TimeHour (c_time)* 60 * 60 - TimeMinute (c_time)* 60 - TimeSeconds (c_time); //---- подсчитаем прибыль int profit = 0 ; int pos; for ( pos = 0 ; pos<HistoryTotal(); pos++ ) { // выделим позицию if ( OrderSelect (pos, SELECT_BY_POS, MODE_HISTORY) == true) { // это не отложенный ордер? if ( OrderType () <= OP_SELL) { // ордер был открыт сегодня? if ( OrderOpenTime ()>=day_start) profit += OrderProfit (); } } else Print ( "Ошибка " , GetLastError (), " при выделении ордера " , OrderTicket ()); } Print ( "Суммарный профит по закрытым позициям = " , profit); alex 2012.05.14 17:55 #1228 mahla : ? 그리고 보증금이 증가하면 무언가가 많이 증가하지 않습니다. ////////////////////////////////////////////////////// / ///////////////////////////////////////////////////// // /////////////////////////////////////////////////// /// //////////// 아마도 코드에 다음이 누락되었을 수 있습니다. 이중 주문 로트 ( ) 선택한 주문의 로트 수를 반환합니다. OrderSelect() 함수를 사용하여 주문을 미리 선택해야 합니다. 예시: if(OrderSelect(10,SELECT_BY_POS)==true) Print("10개 주문에 대한 로트",OrderLots()); 또 다른 Print("OrderSelect()가 오류를 반환했습니다 - ",GetLastError()); Alexey Subbotin 2012.05.14 18:05 #1229 borilunad : 안녕하세요! 도와주세요! PVT 표시기를 사용해보고 싶습니다. 말해 주세요. 무엇이 빠졌습니까? 로그에 쓰기: 2012.05.14 19:34:46 EURUSD,H4에서 'C:\Program Files\Alpari NZ MT4\experts\indicators\PVT.ex4' 파일을 열 수 없습니다. 고맙습니다! 실제 PVT 표시기가 없습니다(확실히 가지고 계십니까?). Boris 2012.05.14 18:30 #1230 alsu : 실제 PVT 표시기가 없습니다(확실히 가지고 계십니까?). 물론 컴파일된 것과 ex4가 모두 있습니다. 그리고 일정에 맞춰보세요. 내가 뭔가를 쓰지 않은 건 아닐까? 고맙습니다! 1...116117118119120121122123124125126127128129130...633 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
후행 정지 및 손익분기점 출력을 추가할 위치는 어디입니까? 그리고 보증금이 증가하면 무언가가 많이 증가하지 않습니다.
////////////////////////////////////////////////////// / ///////////////////////////////////////////////////// // /////////////////////////////////////////////////// /// ////////////
int Buy(int StopLoss = 0, int TakeProfit = 0, Double Lot = 0)
{
정수 티켓 = 0;
이중 SL = 0;
이중 TP = 0;
이중 볼륨 로트 = 0;
새로 고침();
if (스톱로스 != 0)
에스엘 = NormalizeDouble (Bid-StopLoss*Point, Digits);
if (이익 실현 != 0)
TP = NormalizeDouble(Ask+TakeProfit*Point, Digits);
경우 (많은 == 0)
VolumeLot = GetLot();
또 다른
볼륨 로트 = 로트;
티켓 = OrderSend(Symbol(), OP_BUY, VolumeLot, NormalizeDouble(Ask, Digits), 20, SL, TP, NULL, AccountNumber(), 0, 녹색);
if (티켓 == -1)
{
반환(GetLastError());
}
또 다른
{
반환(티켓);
}
}
int Sell(int StopLoss = 0, int TakeProfit = 0, Double Lot = 0)
{
정수 티켓 = 0;
이중 SL = 0;
이중 TP = 0;
이중 볼륨 로트 = 0;
새로 고침();
if (스톱로스 != 0)
에스엘 = NormalizeDouble(Ask+StopLoss*Point, Digits);
if (이익 실현 != 0)
TP = NormalizeDouble(Bid-TakeProfit*Point, Digits);
경우 (많은 == 0)
VolumeLot = GetLot();
또 다른
볼륨 로트 = 로트;
티켓 = OrderSend(Symbol(), OP_SELL, VolumeLot, NormalizeDouble(Bid, Digits), 20, SL, TP, NULL, AccountNumber(), 0, Red);
if (티켓 == -1)
반환(GetLastError());
또 다른
반환(티켓);
}
더블 GetLot()
{
인트 로트;
if (AccountBalance()>=300) lot=0.01;
if (AccountBalance()>=500) lot=0.02;
if (AccountBalance()>=800) lot=0.03;
반환(로트);
}
후행 정지 및 손익분기점 출력을 추가할 위치는 어디입니까? 그리고 보증금이 증가하면 무언가가 많이 증가하지 않습니다.
////////////////////////////////////////////////////// / ///////////////////////////////////////////////////// // /////////////////////////////////////////////////// /// ////////////
고문에서
로트증가기능...... 아마 바꾸는게 나을듯
예시:
이동 평균 .mq4 확인
가격 가치가 아니라 모멘텀 가치를 위해 구축된 EA에서 볼린저 밴드 를 사용하는 방법을 알려주실 수 있습니까? 나는 다음과 같이 시도했다 :
BandOPeriodT - 외부 변수, 볼린저 밴드 기간.
MomentumPeriodT - 각각 운동량 기간입니다.
BandOBBottom=iBands(NULL,0,BandOPeriodT,1,0,iMomentum(NULL,0,MomentumPeriodT,PRICE_OPEN,0),MODE_LOWER,0);
또한 다음과 같이:
MomO = iMomentum(NULL,0,MomentumPeriodT,PRICE_OPEN,0); - 모멘텀 값을 반환하는 내부 변수
BandOBBottom=iBands (NULL,0,BandOPeriodT,1,0, MomO ,MODE_LOWER,0); - 변수의 값은 이전 변수의 값에 대한 더 낮은 볼린저 밴드의 값을 반환해야 합니다.
그러나 MODE_LOWER가 변수의 LOWER 볼린저 밴드 값을 얻는다는 것을 올바르게 이해하고 있습니까? 그렇지 않다면 어떻게 얻습니까?
가격 가치가 아니라 모멘텀 가치를 위해 구축된 EA에서 볼린저 밴드를 사용하는 방법을 알려주실 수 있습니까? 나는 다음과 같이 시도했다 :
BandOPeriodT - 외부 변수, 볼린저 밴드 기간.
MomentumPeriodT - 각각 운동량 기간입니다.
BandOBBottom=iBands(NULL,0,BandOPeriodT,1,0,iMomentum(NULL,0,MomentumPeriodT,PRICE_OPEN,0),MODE_LOWER,0);
또한 다음과 같이:
MomO = iMomentum(NULL,0,MomentumPeriodT,PRICE_OPEN,0); - 모멘텀 값을 반환하는 내부 변수
BandOBBottom=iBands (NULL,0,BandOPeriodT,1,0, MomO ,MODE_LOWER,0); - 변수의 값은 이전 변수의 값에 대한 더 낮은 볼린저 밴드의 값을 반환해야 합니다.
그러나 MODE_LOWER가 변수의 LOWER 볼린저 밴드 값을 얻는다는 것을 올바르게 이해하고 있습니까? 그렇지 않다면 어떻게 얻습니까?
예고편 보기 - 집에서 RSI용 밴드 있음 - Momentum 에 대해서만 동일한 방식으로 모든 작업을 수행하십시오.
설명 - 로그에서 - 시작 부분의 코드를 참조하십시오.
안녕하세요! 도와주세요! PVT 표시기를 사용해보고 싶습니다.
말해 주세요. 무엇이 빠졌습니까?
로그에 쓰기: 2012.05.14 19:34:46 EURUSD,H4에서 'C:\Program Files\Alpari NZ MT4\experts\indicators\PVT.ex4' 파일을 열 수 없습니다.
고맙습니다!
후행 정지 및 손익분기점 출력을 추가할 위치는 어디입니까? 그리고 보증금이 증가하면 무언가가 많이 증가하지 않습니다.
////////////////////////////////////////////////////// / ///////////////////////////////////////////////////// // /////////////////////////////////////////////////// /// ////////////
int Buy(int StopLoss = 0, int TakeProfit = 0, Double Lot = 0)
{
정수 티켓 = 0;
이중 SL = 0;
이중 TP = 0;
이중 볼륨 로트 = 0;
새로 고침();
if (스톱로스 != 0)
에스엘 = NormalizeDouble(Bid-StopLoss*Point, Digits);
if (이익 실현 != 0)
TP = NormalizeDouble(Ask+TakeProfit*Point, Digits);
경우 (많은 == 0)
VolumeLot = GetLot();
또 다른
볼륨 로트 = 로트;
티켓 = OrderSend(Symbol(), OP_BUY, VolumeLot, NormalizeDouble(Ask, Digits), 20, SL, TP, NULL, AccountNumber(), 0, 녹색);
if (티켓 == -1)
{
반환(GetLastError());
}
또 다른
{
반환(티켓);
}
}
int Sell(int StopLoss = 0, int TakeProfit = 0, Double Lot = 0)
{
정수 티켓 = 0;
이중 SL = 0;
이중 TP = 0;
이중 볼륨 로트 = 0;
새로 고침();
if (스톱로스 != 0)
에스엘 = NormalizeDouble(Ask+StopLoss*Point, Digits);
if (이익 실현 != 0)
TP = NormalizeDouble(Bid-TakeProfit*Point, Digits);
경우 (많은 == 0)
VolumeLot = GetLot();
또 다른
볼륨 로트 = 로트;
티켓 = OrderSend(Symbol(), OP_SELL, VolumeLot, NormalizeDouble(Bid, Digits), 20, SL, TP, NULL, AccountNumber(), 0, Red);
if (티켓 == -1)
반환(GetLastError());
또 다른
반환(티켓);
}
더블 GetLot()
{
인트 로트;
if (AccountBalance()>=300) lot=0.01;
if (AccountBalance()>=500) lot=0.02;
if (AccountBalance()>=800) lot=0.03;
반환(로트);
}
전문가가 부착된 기호로. 또한 후행 중지의 값을 가정합니다.
in pips는 TrailingStop 변수에 포함됩니다.
OrderProfit() 함수는 OrderSelect() 함수를 사용하여 선택한 주문에 대한 이익을 반환합니다.
마감된 위치에서 받은 이익을 계산하려고 한다고 가정해 보겠습니다.
모든 마감된 위치에 대한 이익을 계산하는 전체 코드는 다음과 같습니다.
오늘 열려있는 것은 다음과 같습니다.
? 그리고 보증금이 증가하면 무언가가 많이 증가하지 않습니다.
////////////////////////////////////////////////////// / ///////////////////////////////////////////////////// // /////////////////////////////////////////////////// /// ////////////
아마도 코드에 다음이 누락되었을 수 있습니다.
OrderSelect() 함수를 사용하여 주문을 미리 선택해야 합니다.
안녕하세요! 도와주세요! PVT 표시기를 사용해보고 싶습니다.
말해 주세요. 무엇이 빠졌습니까?
로그에 쓰기: 2012.05.14 19:34:46 EURUSD,H4에서 'C:\Program Files\Alpari NZ MT4\experts\indicators\PVT.ex4' 파일을 열 수 없습니다.
고맙습니다!
실제 PVT 표시기가 없습니다(확실히 가지고 계십니까?).
물론 컴파일된 것과 ex4가 모두 있습니다. 그리고 일정에 맞춰보세요. 내가 뭔가를 쓰지 않은 건 아닐까? 고맙습니다!