[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 999

 
여보세요. EMA 기간을 최적화할 수 있도록 어드바이저 코드에 무엇을 삽입해야 하는지 알려주실 수 있습니까?
 
gawrik :
여보세요. EMA 기간을 최적화할 수 있도록 어드바이저 코드에 무엇을 삽입해야 하는지 알려주실 수 있습니까?
정확히 무엇의 EMA 기간?
 
만료 기간 이동 평균 . 여기에 던지면 누군가 수정해 줄까요?
 



#재산권 "hasgkhlhjgg"
#속성 링크 "http://www.efefrWRF.com"

#define MIN_STOPLOSS_POINT 10
#define MIN_TAKEPROFIT_POINT 10
#define MAGIC 316995

외부 문자열 sNameExpert = "DGJJFYGJD";
외부 정수 n계정 = 0;
외부 이중 dBuyStopLossPoint = 0;
외부 이중 dSellStopLossPoint = 0;
외부 이중 dBuyTakeProfitPoint = 0;
외부 이중 dSellTakeProfitPoint = 0;
외부 이중 dBuyTrailingStopPoint = 0;
외부 이중 dSellTrailingStopPoint = 0;
외부 이중 dLots = 0.03;
외부 정수 nSlippage = 4;
extern bool lFlagUseHourTrade = False;
외부 정수 nFromHourTrade = 0;
외부 int nToHourTrade = 23;
extern bool lFlagUseSound = True;
외부 문자열 sSoundFileName = "alert.wav";
외부 색상 colorOpenBuy = 파란색;
extern color colorCloseBuy = 아쿠아;
외부 색상 colorOpenSell = 빨간색;
외부 색상 colorCloseSell = 아쿠아;


무효 deinit() {
논평("");
}

//+----------------------------------------------- --------------------+
//| |
//+----------------------------------------------- --------------------+
정수 시작(){
if (lFlagUseHourTrade){
if (!(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)) {
Comment("거래의 시간이 오지 않았습니다!");
리턴(0);
}
}

if(막대 < 100){
Print("100개 미만의 막대");
리턴(0);
}

if (nAccount > 0 && nAccount != AccountNumber()){
Comment("계정 거래 :"+AccountNumber()+" 금지!");
리턴(0);
}

if((dBuyStopLossPoint > 0 && dBuyStopLossPoint < MIN_STOPLOSS_POINT) ||
(dSellStopLossPoint > 0 && dSellStopLossPoint < MIN_STOPLOSS_POINT)){
Print("StopLoss가 " + MIN_STOPLOSS_POINT보다 작음);
리턴(0);
}
if((dBuyTakeProfitPoint > 0 && dBuyTakeProfitPoint < MIN_TAKEPROFIT_POINT) ||
(dSellTakeProfitPoint > 0 && dSellTakeProfitPoint < MIN_TAKEPROFIT_POINT)){
Print("TakeProfit이 " + MIN_TAKEPROFIT_POINT보다 작음);
리턴(0);
}

이중 diMA0=iMA(NULL,1,15,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA1=iMA(NULL,1,29,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA2=iMA(NULL,1,29,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA3=iMA(NULL,1,50,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA4=iMA(NULL,1,50,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA5=iMA(NULL,1,100,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA6=iMA(NULL,5,15,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA7=iMA(NULL,5,29,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA8=iMA(NULL,5,29,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA9=iMA(NULL,5,50,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA10=iMA(NULL,5,50,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA11=iMA(NULL,5,100,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA12=iMA(NULL,15,15,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA13=iMA(NULL,15,29,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA14=iMA(NULL,15,29,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA15=iMA(NULL,15,50,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA16=iMA(NULL,15,50,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA17=iMA(NULL,15,100,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA18=iMA(NULL,30,15,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA19=iMA(NULL,30,29,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA20=iMA(NULL,30,29,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA21=iMA(NULL,30,50,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA22=iMA(NULL,30,50,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA23=iMA(NULL,30,100,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA24=iMA(NULL,60,15,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA25=iMA(NULL,60,29,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA26=iMA(NULL,60,29,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA27=iMA(NULL,60,50,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA28=iMA(NULL,60,50,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA29=iMA(NULL,60,100,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA30=iMA(NULL,60,15,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA31=iMA(NULL,60,29,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA32=iMA(NULL,1,15,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA33=iMA(NULL,1,29,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA34=iMA(NULL,1,29,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA35=iMA(NULL,1,50,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA36=iMA(NULL,1,50,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA37=iMA(NULL,1,100,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA38=iMA(NULL,5,15,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA39=iMA(NULL,5,29,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA40=iMA(NULL,5,29,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA41=iMA(NULL,5,50,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA42=iMA(NULL,5,50,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA43=iMA(NULL,5,100,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA44=iMA(NULL,15,15,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA45=iMA(NULL,15,29,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA46=iMA(NULL,15,29,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA47=iMA(NULL,15,50,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA48=iMA(NULL,15,50,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA49=iMA(NULL,15,100,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA50=iMA(NULL,30,15,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA51=iMA(NULL,30,29,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA52=iMA(NULL,30,29,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA53=iMA(NULL,30,50,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA54=iMA(NULL,30,50,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA55=iMA(NULL,30,100,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA56=iMA(NULL,60,15,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA57=iMA(NULL,60,29,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA58=iMA(NULL,60,29,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA59=iMA(NULL,60,50,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA60=iMA(NULL,60,50,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA61=iMA(NULL,60,100,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA62=iMA(NULL,60,15,0,MODE_EMA,PRICE_CLOSE,0);
이중 diMA63=iMA(NULL,60,29,0,MODE_EMA,PRICE_CLOSE,0);


if(AccountFreeMargin() < (1000*dLots)){
Print("돈이 없습니다. Free Margin = " + AccountFreeMargin());
리턴(0);
}

부울 lFlagBuyOpen = 거짓, lFlagSellOpen = 거짓, lFlagBuyClose = 거짓, lFlagSellClose = 거짓;

dilFlagBuyOpen = (diMA0>diMA1 && diMA2>diMA3 && diMA4>diMA5 && diMA6>diMA7 && diMA8>diMA9 && diMA10>diMA11 && diMA12>diMA13 && diMA14>diMA15 && diMA16>diMA15 && diMA16>diMA18> && diMA24>diMA25 && diMA26>diMA27 && diMA28>diMA29);
dilFlagSellOpen = (diMA32<diMA33 && diMA34<diMA35 && diMA36<diMA37 && diMA38<diMA39 && diMA40<diMA41 && diMA42<diMA43 &&&diMA42<diMA43 &5&5&&diMA44<diMA45 && diMA46<diMA487 && && diMA58<diMA59 && diMA60<diMA61);
lFlagBuyClose = (diMA30<diMA31);
lFlagSellClose = (diMA62>diMA63);

if (!ExistPositions()){

if (lFlagBuyOpen){
오픈바이();
리턴(0);
}

if (lFlagSellOpen){
오픈셀();
리턴(0);
}
}
if (ExistPositions()){
if(주문유형()==OP_BUY){
if (lFlagBuyClose){
bool flagCloseBuy = OrderClose(OrderTicket(), OrderLots(), 입찰, nSlippage, colorCloseBuy);
if (flagCloseBuy && lFlagUseSound)
플레이사운드(사운드파일명);
리턴(0);
}
}
if(주문유형()==OP_SELL){
if (lFlagSellClose){
bool flagCloseSell = OrderClose(OrderTicket(), OrderLots(), Ask, nSlippage, colorCloseSell);
if (flagCloseSell && lFlagUseSound)
플레이사운드(사운드파일명);
리턴(0);
}
}
}

if (dBuyTrailingStopPoint > 0 || dSellTrailingStopPoint > 0){

for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
bool lMagic = true;
if (MAGIC > 0 && OrderMagicNumber() != MAGIC)
lmagic=거짓;

if (OrderSymbol()==Symbol() && lMagic) {
if (OrderType()==OP_BUY && dBuyTrailingStopPoint > 0) {
if (Bid-OrderOpenPrice() > dBuyTrailingStopPoint*Point) {
if (OrderStopLoss()<Bid-dBuyTrailingStopPoint*Point)
ModifyStopLoss(Bid-dBuyTrailingStopPoint*Point);
}
}
(주문 유형()==OP_SELL) {
if (OrderOpenPrice()-Ask>dSellTrailingStopPoint*Point) {
if (OrderStopLoss()>Ask+dSellTrailingStopPoint*Point || OrderStopLoss()==0)
ModifyStopLoss(Ask+dSellTrailingStopPoint*Point);
}
}
}
}
}
}
리턴(0);
}

부울 ExistPositions() {
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
bool lMagic = true;

if (MAGIC > 0 && OrderMagicNumber() != MAGIC)
lmagic=거짓;

if (OrderSymbol()==Symbol() && lMagic) {
반환(참);
}
}
}
반환(거짓);
}

무효 ModifyStopLoss(이중 ldStopLoss) {
bool lFlagModify = OrderModify(OrderTicket(), OrderOpenPrice(), ldStopLoss, OrderTakeProfit(), 0, CLR_NONE);
if (lFlagModify && lFlagUseSound)
플레이사운드(사운드파일명);
}

무효 OpenBuy() {
이중 dStopLoss = 0, dTakeProfit = 0;

if (dBuyStopLossPoint > 0)
dStopLoss = Bid-dBuyStopLossPoint*포인트;

if (dBuyTakeProfitPoint > 0)
dTakeProfit = 입찰가 + dBuyTakeProfitPoint * 포인트;

int numorder = OrderSend(Symbol(), OP_BUY, dLots, Ask, nSlippage, dStopLoss, dTakeProfit, sNameExpert, MAGIC, 0, colorOpenBuy);

if (번호 > -1 && lFlagUseSound)
플레이사운드(사운드파일명);
}

무효 OpenSell() {
이중 dStopLoss = 0, dTakeProfit = 0;

if (dSellStopLossPoint > 0)
dStopLoss = Ask+dSellStopLossPoint*포인트;

if (dSellTakeProfitPoint > 0)
dTakeProfit = Ask-dSellTakeProfitPoint*포인트;

int numorder = OrderSend(Symbol(), OP_SELL, dLots, Bid, nSlippage, dStopLoss, dTakeProfit, sNameExpert, MAGIC, 0, colorOpenSell);

if (번호 > -1 && lFlagUseSound)
플레이사운드(사운드파일명);
}

여기 그가 있습니다. 이동 평균 기간을 최적화하는 것이 가능하고 모든 기간의 이동 평균 기간이 동일하기를 바랍니다(이 예에서와 같이). 다른 쌍에 사용하고 싶지만 유로 벅스 용으로 날카롭게되어 수동으로 다시 집어 듭니다. 정신적으로나 육체적으로 할 수 없습니다.

 
여기와 슬라이딩에 개폐
 
누구든지 도울 수 있습니까?
 

좋은 아침 !

함수 계산에서 두 개의 계산된 매개변수를 유도하는 방법을 알려주시겠습니까? 내가 올바르게 이해했다면 return() 함수는 괄호 안에 지정된 매개변수를 하나만 반환합니다.

 double РасчётТЛвверх( int a, double Цена 1 Син)
        {
           double МА 23 = iMA ( NULL , 0 , 23 , 0 , MODE_EMA , PRICE_CLOSE ,a),
                 
                 MМА 23 [ 17 ];
                 
                 MМА 23 [ 0 ]=МА 23 - 603 * Point ;
                 MМА 23 [ 1 ]=МА 23 - 377 * Point ;
                 MМА 23 [ 2 ]=МА 23 - 233 * Point ;
                 MМА 23 [ 3 ]=МА 23 - 144 * Point ;
                 MМА 23 [ 4 ]=МА 23 - 89 * Point ;
                 MМА 23 [ 5 ]=МА 23 - 55 * Point ;
                 MМА 23 [ 6 ]=МА 23 - 34 * Point ;
                 MМА 23 [ 7 ]=МА 23 - 21 * Point ;
                 MМА 23 [ 8 ]=МА 23 ;
                 MМА 23 [ 9 ]=МА 23 + 21 * Point ;
                 MМА 23 [ 10 ]=МА 23 + 34 * Point ;
                 MМА 23 [ 11 ]=МА 23 + 55 * Point ;
                 MМА 23 [ 12 ]=МА 23 + 89 * Point ;
                 MМА 23 [ 13 ]=МА 23 + 144 * Point ;
                 MМА 23 [ 14 ]=МА 23 + 233 * Point ;
                 MМА 23 [ 15 ]=МА 23 + 377 * Point ;
                 MМА 23 [ 16 ]=МА 23 + 603 * Point ;
  
           for ( int i= 0 ;i<= 16 ;i++)
            {
               if ( NormalizeDouble (Цена 1 Син+ 8 * Point , Digits )<= NormalizeDouble (MМА 23 [i], Digits ))
                {
                   double ТЛвверх=MМА 23 [i+ 5 ];
                   double БезУбMМА 23 вверх = MМА 23 [i+ 4 ];
                   break ;
                    
                      
                }
            }
         
          
                
         return (ТЛвверх);
        }
//--------------------------------------------------------------------

TLup만 표시할 수 있습니다. 그리고 BezUbMMA23up도 사용하고 싶습니다. 그러나 return(TLup, WithoutUbMMA23up) 또는 return(TLup; WithoutUbMMA23up)과 같이 작성하면 오류가 발생합니다. 함수 호출은 - double ТЛup=Calculation ТЛup(a,Price1Sin);

TLup과 BezUbMMA23up을 모두 사용하려면 어떻게 신청하나요? 또는 BezUbMMA23up 매개변수를 계산하려면 위의 코드를 별도로 다시 작성하여 return(WithoutUbMMA23up) ?

 
예를 들어 전역 변수 를 만들고 그 결과를 함수에 삽입합니다...
 
따라서 여전히 계산에서 두 가지 결과를 도출해야 합니다. 그리고 첨부된 코드에서는 하나만 표시되는 것으로 나타났습니다. 2를 출력하는 방법?
 
모두 감사합니다. 여기에서 답을 찾았습니다 - https://www.mql5.com/ru/articles/1496