เรียนท่าน Admin หรือท่านผู้รู้ ครับ
คือผมได้เขียนอินดิเคเตอร์ง่าย ๆ ตัวหนึ่งเพื่อคำนวณหาค่า Risk/Reward แต่ว่ามันคำนวณให้เพียงออร์เดอร์เดียว
หากผมต้องการเก็บข้อมูล แต่ละออร์เดอร์ ซึ่งในหนึ่งออร์เดอร์จะมี ราคาเปิด lot, sl, tp
แล้วนำมาคำนวณเพื่อหาความเสี่ยง/กำไร ต่อจำนวนทุนของเรา คำนวณออกมาเป็นเปอร์เซ็นต์ ผมต้องการนำทุกออร์เดอร์มาคำนวณด้วยหมดเลย
ผมต้องเขียนโค๊ดอย่างไรครับถึงจะให้เก็บข้อมูลแล้วคำนวณให้ คือผมไม่มีความรู้เรื่อง array หรือการเก็บข้อมูลเลยครับ
ท่าน admin หรือ ท่านผู้รู้ช่วยชี้แนะ เขียนโค๊ดต่อให้ผมด้วยครับ
//+------------------------------------------------------------------+
//| Risk / Reward Ratio.mq4 |
//| Bruno Gaiteiro |
//| bgaiteiro@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Copyright ฉ 2009, bgaiteiro"
#property link "bgaiteiro@gmail.com"
#property indicator_chart_window
//---- input parameters
extern int SL_position_size = 20;
int OpenOrders=0, cnt=0;
int Order_Type=0;
int i=0;
double RiskReward_ratio=0;
double SL_price=0, TP_price=0, Open_Price=0;
double Risk=0;
double Reward=0;
string Text="";
double position_size=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//----
OpenOrders=0;
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol())
{
OpenOrders++;
Open_Price = OrderOpenPrice();
TP_price = OrderTakeProfit();
SL_price = OrderStopLoss();
Order_Type = OrderType();
}
}
for(cnt=OrdersTotal();cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
Order_Type=OrderType();
if (OrderSymbol()==Symbol())
{
if (Order_Type == OP_SELL) { Risk = ((((SL_price - Open_Price)/Point)*OrderLots()*1000))/AccountBalance();
Reward = ((((Open_Price - TP_price)/Point)*OrderLots()*1000))/AccountBalance();}
if (Order_Type == OP_BUY) { Risk = ((((Open_Price - SL_price)/Point)*OrderLots()*1000))/AccountBalance();
Reward = ((((TP_price - Open_Price)/Point)*OrderLots()*1000))/AccountBalance();}
}
}
position_size = ((((SL_position_size/Point)/1000)/(AccountBalance() * 10)/100));
Text = " Risk/Reward Ratio 1 : " + DoubleToStr(Reward/Risk,2) ;
if(OpenOrders=0){Text=" ";}
Comment(Text,
"\n Position_LotSize = ",position_size,
"\n TakeProfkt = ",Reward," % ",
"\n StopLoss = ",Risk," % ");
return(0);
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+