if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 계속
if (OrderSymbol() != Symbol()) 계속;
if (OrderMagicNumber() != Magic) 계속;
if (OrderType() != type1 && OrderType() != type2) 계속;
if (max_lot == 0 || OrderLots() >= max_lot)
{
max_lot = OrderLots();
}
}
반환(max_lot);
}
예, GetMaxLot(OP_BUY,OP_BUY)를 사용할 수 있습니다. 공개 거래 구매에 대한 maxlot을 얻으려면 GetMaxLot(OP_SELL,OP_SELL); 공개 거래만 판매할 수 있는 maxlot을 얻으려면.
"if (OrderLots() > max_lot)"을 사용하여 이 코드를 "if (max_lot == 0 || OrderLots() >= max_lot)"으로 단순화할 수 있습니다.
max_lot = 0이면 자동으로 열려 있는 거래보다 낮습니다. 그리고 ">=" change with ">" coz에 서명하십시오. 값이 같으면 max_lot을 같은 값으로 업데이트할 필요가 없고 쓸데없는 노력이 필요합니다. 새 값이 max_lot보다 큰 경우에만 업데이트됩니다.
안녕 얘들아
여기에 질문이 있습니다... 다음을 어떻게 변경합니까?
외부 이중 MaxLot = 1.50;
이중 max_lot = GetMaxLot(OP_BUY, OP_SELL);
if (max_lot >= MaxLot) lot = CalcHedgeLot(order_type);
(order_type)]: ", 로트);
if (lot == -1) return (lot);
많은 = NormalizeDouble(많은, LotPrec);
if (lot > MaxLot) lot = MaxLot;
if (lot < MinLot) lot = MinLot;
반환(로트);
}
위의 OP_BUY AND OP_SELL 확인
질문: OP_BUY 또는 OP_SELL로 어떻게 변경합니까?
평가하다GetMaxLot() 함수 코드를 수정하거나 GetMaxLot(OP_BUY, OP_BUY); 및 GetMaxLot(OP_SELL, OP_SELL); (코드에 따라 다름 - 그렇게 할 수 있거나 할 수 없음).
하지만 시도해 볼 가치가 있다고 생각합니다
고엔
이것이 당신이 찾고 있는 것입니까?
-----------
int bars_count=WindowBarsPerChart();
int bar=WindowFirstVisibleBar();
-----------
고엔고마워요, 고엔.
GetMaxLot() 함수 코드를 수정하거나 GetMaxLot(OP_BUY, OP_BUY); 및 GetMaxLot(OP_SELL, OP_SELL); (코드에 따라 다름 - 그렇게 할 수 있거나 할 수 없음).
하지만 시도해 볼 가치가 있다고 생각합니다
고엔대답 해줘서 고마워..
여기서 무엇을 변경해야 합니까? 당신의 도움을 주셔서 감사합니다
더블 GetMaxLot(int type1, int type2)
{
이중 max_lot = 0.0;
int cnt = OrdersTotal();
for (int i=0; i < cnt; i++)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 계속
if (OrderSymbol() != Symbol()) 계속;
if (OrderMagicNumber() != Magic) 계속;
if (OrderType() != type1 && OrderType() != type2) 계속;
if (max_lot == 0 || OrderLots() >= max_lot)
{
max_lot = OrderLots();
}
}
반환(max_lot);
}
여기서 약간 손해...
tis 표시기에 경고를 추가하는 방법은 무엇입니까?
나는 정말 잘 작동하는 MA 크로스오버 표시기를 가지고 있지만 사운드 경고 지원은 나를 많은 거래를 놓치게 만들지 않습니다. 메타에 대해 아무것도 모르기 때문에 tis 표시기에 경고를 추가하는 방법을 가르쳐 주시겠습니까? 코드 문제 .... 감사합니다 ...
표시기 자체와 함께 표시기의 코드는 다음과 같습니다. 감사합니다...
/*[[
이름 := EMA 크로스
저자 := 합사
링크 := http://www.metaquotes.net/
별도의 창 := 아니오
별도의 창 := 아니오
첫 번째 색상:= 레드
첫 번째 그리기 유형 := 기호
첫 번째 기호 := 108
두 번째 데이터 사용 := 예
두 번째 색상 := DarkOliveGreen
두 번째 그리기 유형 := 기호
두 번째 기호:= 108
]]*/
#재산권 "합사"
#속성 링크 ""
extern int SlowPeriod=20;
extern int FastPeriod=5;
#속성 표시기_버퍼 3
#속성 표시기_차트_창
#property indicator_color1 빨간색
#property indicator_color2 녹색
이중 L20[];
더블 L50[];
이중 시프트=0,val1=0,val2=0;
정수 초기화()
{
표시 버퍼(3);
SetIndexStyle(0,DRAW_ARROW);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(0, 108);
SetIndexArrow(1, 108);
SetIndexBuffer(0,L20);
SetIndexBuffer(1,L50);
//---- 표시기
//----
리턴(0);
}
정수 시작()
{
int counted_bars=IndicatorCounted();
//----
int i = 막대 - counted_bars - 1;
동안 (i>=0)
{
값1=0;
val2=0;
이중 iMaSlowPrevious = iMA(NULL,0,SlowPeriod,0,MODE_EMA, PRICE_CLOSE, i-1);
이중 iMaSlowCurrent = iMA(NULL,0,SlowPeriod,0,MODE_EMA, PRICE_CLOSE, i);
이중 iMaFastPrevious = iMA(NULL,0,FastPeriod,0,MODE_EMA, PRICE_CLOSE, i-1);
이중 iMaFastCurrent = iMA(NULL,0,FastPeriod,0,MODE_EMA, PRICE_CLOSE, i);
if (iMaFastPreviousiMaSlowCurrent ) val1=높음;
if (iMaFastPrevious>iMaSlowPrevious && iMaFastCurrent<iMaSlowCurrent) val2=낮음;
L20=val1+5*포인트;
L50=val2-5*포인트;
나--;
}
//----
반환(0);
}
대답 해줘서 고마워..
여기서 무엇을 변경해야 합니까? 당신의 도움을 주셔서 감사합니다
더블 GetMaxLot(int type1, int type2)
{
이중 max_lot = 0.0;
int cnt = OrdersTotal();
for (int i=0; i < cnt; i++)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 계속
if (OrderSymbol() != Symbol()) 계속;
if (OrderMagicNumber() != Magic) 계속;
if (OrderType() != type1 && OrderType() != type2) 계속;
if (max_lot == 0 || OrderLots() >= max_lot)
{
max_lot = OrderLots();
}
}
반환(max_lot);
}예, GetMaxLot(OP_BUY,OP_BUY)를 사용할 수 있습니다. 공개 거래 구매에 대한 maxlot을 얻으려면 GetMaxLot(OP_SELL,OP_SELL); 공개 거래만 판매할 수 있는 maxlot을 얻으려면.
"if (OrderLots() > max_lot)"을 사용하여 이 코드를 "if (max_lot == 0 || OrderLots() >= max_lot)"으로 단순화할 수 있습니다.
max_lot = 0이면 자동으로 열려 있는 거래보다 낮습니다. 그리고 ">=" change with ">" coz에 서명하십시오. 값이 같으면 max_lot을 같은 값으로 업데이트할 필요가 없고 쓸데없는 노력이 필요합니다. 새 값이 max_lot보다 큰 경우에만 업데이트됩니다.
해당 코드를 변경하면 프로세스가 더 빨라질 수 있습니다.
고엔
손절매 문제
여보세요,
저는 이 모든 외환/메타 거래에 익숙하지 않지만 모든 것이 어떻게 작동하는지 이해하려고 노력하고 있습니다.
이제 EA를 작성하려고 하는데 근본적인 것을 놓치고 있는 것 같아 두렵습니다.
내 코드에서
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",MAGIC,0,Red);
~와 함께
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+Point*10,0,"",MAGIC,0,Red);
그리고 전략 테스터에서 이 새 버전을 테스트하고 주문을 적게 받습니다. 손절매를 추가하면 주문 입력 수를 어떻게 줄일 수 있습니까? 스탑 오더를 추가하면 오더가 더 일찍 종료되어 새로운 오더를 더 빨리 추가할 수 있지만 더 적은 주문이...?
어떤 아이디어라도?
감사해요
여보세요,
저는 이 모든 외환/메타 거래에 익숙하지 않지만 모든 것이 어떻게 작동하는지 이해하려고 노력하고 있습니다.
이제 EA를 작성하려고 하는데 근본적인 것을 놓치고 있는 것 같아 두렵습니다.
내 코드에서
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",ordercount,0,Red);
~와 함께
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+Point*10,0,"",ordercount,0,Red);
그리고 전략 테스터에서 이 새 버전을 테스트하고 주문을 적게 받습니다. 손절매를 추가하면 주문 입력 수를 어떻게 줄일 수 있습니까? 스탑 오더를 추가하면 오더가 더 일찍 종료되어 새로운 오더를 더 빨리 추가할 수 있지만 더 적은 주문이...?
어떤 아이디어라도?
감사해요10핍은 브로커가 부과한 정지 제한에 너무 가까울 수 있습니다(브로커마다 다름). 즉, 최소 10핍이고 주문이 진행되는 동안 가격이 이 내부에서 1핍을 흔들면 주문이 거부됩니다. .
오믈렛, 맞습니다. 손절매를 늘리면 해결되었습니다. 감사합니다! :-)
#property indicator_color2 Yellow
extern bool TrendDirectionUp=true;
string Color1;
string Color2;
int init() {
if(TrendDirectionUp==true)//Conditionj 1
{
Color1=Yellow;
Color2=CLR_NONE;
}
if(TrendDirectionUp==false)//Condition2
{
Color1=CLR_NONE;
Color2=Magenta;
}
SetIndexStyle(0,DRAW_ARROW,0,star_size,Color1);
SetIndexStyle(1,DRAW_ARROW,0,star_size,Color2);
SetIndexArrow(0,172);//333
SetIndexArrow(1,172);//334
SetIndexBuffer(0,b1);
SetIndexBuffer(1,b2);
return(0);
}현재 Color(s) 1 & 2 모두 그래프에서 '검은색'으로 표시됩니다!!
전문가 전문가가 이 문제를 해결하는 데 도움을 줄 수 있나요???
미리 감사합니다!