
Topics
Replies
mindbreaker
04 May 2015, 17:32
RE: RE: RE: RE: RE:
and when stop:
protected override void OnStop() { // Put your deinitialization logic here Print("Bot was stoped!"); }
@mindbreaker
mindbreaker
04 May 2015, 17:30
RE: RE: RE: RE:
Pips count and stop:
// profit pips double pips = 0; foreach (var trade in Positions) { pips = pips + trade.Pips; } if (pips > 100) { Stop(); }
@mindbreaker
mindbreaker
04 May 2015, 17:23
RE: RE: RE:
using System; using System.Linq; using cAlgo.API; using cAlgo.API.Indicators; using cAlgo.API.Internals; using cAlgo.Indicators; namespace cAlgo { [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)] public class NewcBot : Robot { [Parameter(DefaultValue = 0.0)] public double Parameter { get; set; } int tradeStart = 0; int tradeCurrent = 0; protected override void OnStart() { // Put your initialization logic here foreach (var trade in History) { tradeStart++; } } protected override void OnTick() { // colose id foreach (var trade in History) { tradeCurrent++; } if (tradeCurrent - tradeStart >= 10) { Print("Close bot after 10 closed positions"); } } protected override void OnStop() { // Put your deinitialization logic here } } }
@mindbreaker
mindbreaker
04 May 2015, 17:22
RE: RE:
hiba7rain said:
?hiba7rain said:
Hi
Can any one help to show How to stop cBot after X number of trades or X number of profit pips?
thanks
using System; using System.Linq; using cAlgo.API; using cAlgo.API.Indicators; using cAlgo.API.Internals; using cAlgo.Indicators; namespace cAlgo { [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)] public class NewcBot : Robot { [Parameter(DefaultValue = 0.0)] public double Parameter { get; set; } int tradeStart = 0; int tradeCurrent = 0; protected override void OnStart() { // Put your initialization logic here foreach (var trade in History) { tradeStart++; } } protected override void OnTick() { // colose id foreach (var trade in History) { foreach (var trade in History) { tradeCurrent++; } } if(tradeCurrent - tradeStart >= 10){ Print("Close bot after 10 closed positions") } } protected override void OnStop() { // Put your deinitialization logic here } } }
after 10 trade closed
@mindbreaker
mindbreaker
04 May 2015, 09:57
RE: RE:
protected override void OnTick() { double earn = 0; foreach (var pos in Positions) { if (pos.TradeType == TradeType.Buy) { // if You write pos and hit dot you have got tips for positions in calgo //pos.NetProfit; //pos.Pips; //... earn += pos.GrossProfit; } } if (earn > 100) { foreach (var pos in Positions) { if (pos.TradeType == TradeType.Buy) { ClosePosition(pos); } } } }
@mindbreaker
mindbreaker
03 May 2015, 19:56
@mindbreaker
mindbreaker
01 May 2015, 17:59
zzzz
foreach (var pos in Positions){ If (pos.Symbol="EURUSD"){ // //closepositionhere }@mindbreaker
mindbreaker
28 Apr 2015, 15:06
RE:
millionaireboy said:
Hello Friends,
Is it Possible that i can show my Indicator at my site ? Actually i have got created one best custom indicator i want that i share that indicator with others but just at my site.. I don't want to share indicator ?
If possible let me know i'm ready to pay for it. (if it's possible )
Hi,
You could display indicator value on your site like text .
or
create desktop screen shot in c# and display on web page
or
in mt4 create chart screenshot(from robot EA) every minute and set on web page.
It is possible.
Bye.
@mindbreaker
mindbreaker
21 Apr 2015, 14:20
RE:
tradermatrix said:
hello
for a robot I use this method to cut my positions (a total gains):
[Parameter(DefaultValue = 30)]
public double totalgains { get; set; }var netProfit = 0.0;
foreach (var openedPosition in Positions)
{
netProfit += openedPosition.NetProfit + openedPosition.Commissions;
}
if (Math.Abs(netProfit) >= totalgains)
if (netProfit >= totalgains && totalgains != 0)
{
foreach (var openedPosition in Positions)
{
ClosePosition(openedPosition);
}/////////////////////////////////////////////////////////////////////
in this method it cut all the buy and sell positions.
I would like a method that separately cut a total buy and sell total.[Parameter(DefaultValue = 30)]
public double totalBuy { get; set; }[Parameter(DefaultValue = 30)]
public double totalSell { get; set; }
thank you for your help
cordially
Hi,
if(openedPosition.TradeType.Buy){
// todo with buy positions
}else{
// todo with sell positions
}
Bye.
@mindbreaker
mindbreaker
20 Apr 2015, 10:14
RE:
WhiteSage said:
Check the overloads, you can pass in a marketSeries.
Thank you.
found here: /forum/whats-new/1463 and /forum/calgo-reference-samples/2227
@mindbreaker
mindbreaker
15 Apr 2015, 18:22
Working
Works (SSL cAlgo Client send Symbol Bid Ask to the Server C#):
Server SSL C# MultiConnection
Server.cs
using System; using System.Threading; using System.Net; using System.Net.Sockets; using System.Text; using System.Text.RegularExpressions; using System.IO; using System.Net.Security; using System.Security.Cryptography.X509Certificates; using System.Security.Authentication; namespace server { public class server { private string positions = ""; // Declare a two dimensional array // users allowed 10 private static int maxSlots = 11; private string[,] posArray = new string[maxSlots + 1, 1]; X509Certificate serverCertificate = new X509Certificate2("ssl.p12", "KeyPass"); ManualResetEvent tcpClientConnected = new ManualResetEvent(false); static void DisplayCertificateInformation(SslStream stream) { Console.WriteLine("Certificate revocation list checked: {0}", stream.CheckCertRevocationStatus); X509Certificate localCertificate = stream.LocalCertificate; if (stream.LocalCertificate != null) { Console.WriteLine("Local cert was issued to {0} and is valid from {1} until {2}.", localCertificate.Subject, localCertificate.GetEffectiveDateString(), localCertificate.GetExpirationDateString()); } else { Console.WriteLine("Local certificate is null."); } // Display the properties of the client's certificate. X509Certificate remoteCertificate = stream.RemoteCertificate; if (stream.RemoteCertificate != null) { Console.WriteLine("Remote cert was issued to {0} and is valid from {1} until {2}.", remoteCertificate.Subject, remoteCertificate.GetEffectiveDateString(), remoteCertificate.GetExpirationDateString()); } else { Console.WriteLine("Remote certificate is null."); } } static string ReadMessage(SslStream sslStream) { // Read the message sent by the client. // The client signals the end of the message using the // "<EOF>" marker. byte [] buffer = new byte[2048]; StringBuilder messageData = new StringBuilder(); int bytes = -1; do { // Read the client's test message. bytes = sslStream.Read(buffer, 0, buffer.Length); // Use Decoder class to convert from bytes to UTF8 // in case a character spans two buffers. Decoder decoder = Encoding.UTF8.GetDecoder(); char[] chars = new char[decoder.GetCharCount(buffer,0,bytes)]; decoder.GetChars(buffer, 0, bytes, chars,0); messageData.Append (chars); // Check for EOF or an empty message. if (messageData.ToString().IndexOf("<EOF>") != -1) { break; } } while (bytes !=0); return messageData.ToString(); } void ProcessIncomingData(object obj) { SslStream sslStream = (SslStream)obj; try{ // Set timeouts for the read and write to 5 seconds. sslStream.ReadTimeout = 5000; sslStream.WriteTimeout = 5000; // Read a message from the client. Console.WriteLine("Waiting for client message..."); string messageData = ReadMessage(sslStream); Console.WriteLine("Received: {0}", messageData); // Write a message to the client. byte[] message = Encoding.UTF8.GetBytes("Hello from the server.<EOF>"); Console.WriteLine("Sending hello message."); sslStream.Write(message); sslStream.Flush(); } catch (Exception e) { } } void ProcessIncomingConnection(IAsyncResult ar) { TcpListener listener = (TcpListener)ar.AsyncState; TcpClient client = listener.EndAcceptTcpClient(ar); SslStream sslStream = new SslStream(client.GetStream(), false); try { sslStream.AuthenticateAsServer(serverCertificate, false, SslProtocols.Tls, true); //DisplayCertificateInformation(sslStream); } catch (Exception e) { Console.WriteLine("Client no ssl" + client); client.Close(); } ThreadPool.QueueUserWorkItem(ProcessIncomingData, sslStream); tcpClientConnected.Set(); } public void start() { IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8080); TcpListener listener = new TcpListener(endpoint); listener.Start(); while (true) { tcpClientConnected.Reset(); listener.BeginAcceptTcpClient(new AsyncCallback(ProcessIncomingConnection), listener); tcpClientConnected.WaitOne(); } } } class Program { static void Main(string[] args) { Console.WriteLine("Multi user server. Recive save and send data to clients max 10 accounts."); //DateTime.Now.ToLongTimeString() Console.WriteLine(DateTime.Now + " Waiting for connections...."); try { server s = new server(); s.start(); } catch (Exception e) { } } } }
Client.algo
// System using System; using System.IO; using System.Net; using System.Text; using System.Text.RegularExpressions; // cAlgo using cAlgo.API; using cAlgo.API.Indicators; using cAlgo.API.Internals; using cAlgo.API.Requests; using cAlgo.Indicators; using System.Collections; using System.Collections.Generic; using System.Net.Security; using System.Net.Sockets; using System.Security.Authentication; using System.Security.Cryptography.X509Certificates; using System.Threading; namespace cAlgo { [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.FullAccess)] public class OnePositionClient : Robot { // "Server SSL Certyficate (CN=www.domain.com)" public string hostname = "www.example.com"; // "Server host www.example.com" public string host = "www.example.com"; // "Server port" public int port = 8080; List<string> PosOpenID = new List<string>(); public static string txt = ""; private static Hashtable certificateErrors = new Hashtable(); protected override void OnBar() { ConnectSSL("Hello Server " + Symbol); } //================================================================================================================ // SSL Socket client Data send //================================================================================================================ // The following method is invoked by the RemoteCertificateValidationDelegate. public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { if (sslPolicyErrors == SslPolicyErrors.None) return true; Console.WriteLine("Certificate error: {0}", sslPolicyErrors); // Do not allow this client to communicate with unauthenticated servers when false. //return false; //Force ssl certyfikates as correct return true; } static string ReadMessage(SslStream sslStream) { // Read the message sent by the server. // The end of the message is signaled using the // "<EOF>" marker. byte[] buffer = new byte[2048]; StringBuilder messageData = new StringBuilder(); int bytes = -1; do { bytes = sslStream.Read(buffer, 0, buffer.Length); // Use Decoder class to convert from bytes to UTF8 // in case a character spans two buffers. Decoder decoder = Encoding.UTF8.GetDecoder(); char[] chars = new char[decoder.GetCharCount(buffer, 0, bytes)]; decoder.GetChars(buffer, 0, bytes, chars, 0); messageData.Append(chars); // Check for EOF. if (messageData.ToString().IndexOf("<EOF>") != -1) { break; } } while (bytes != 0); return messageData.ToString(); } public void ConnectSSL(string msg = "") { txt = ""; try { TcpClient client = new TcpClient(host, port); // Create an SSL stream that will close the client's stream. SslStream sslStream = new SslStream(client.GetStream(), false, new RemoteCertificateValidationCallback(ValidateServerCertificate), null); try { sslStream.AuthenticateAsClient(hostname); } catch (AuthenticationException e) { Console.WriteLine("Exception: {0}", e.Message); if (e.InnerException != null) { Print("Inner exception: {0}", e.InnerException.Message); } Print("Authentication failed - closing the connection."); client.Close(); return; } // Signal the end of the message using the "<EOF>". // Semd message byte[] messsage = Encoding.UTF8.GetBytes(msg + " <EOF>"); // Send hello message to the server. sslStream.Write(messsage); sslStream.Flush(); // Read message from the server. string serverMessage = ReadMessage(sslStream); Print("Server says: {0}", serverMessage); // Close the client connection. client.Close(); Print("Client closed."); } catch (ArgumentNullException e) { Print("ArgumentNullException: {0}", e); } catch (SocketException e) { Print("SocketException: {0}", e); } } } }
@mindbreaker
mindbreaker
15 Apr 2015, 17:11
sslstream end
Hi all,
Multi ssl server and client from calgo
It does not work correctly client dont Print server message why?
Client:
// System using System; using System.IO; using System.Net; using System.Text; using System.Text.RegularExpressions; // cAlgo using cAlgo.API; using cAlgo.API.Indicators; using cAlgo.API.Internals; using cAlgo.API.Requests; using cAlgo.Indicators; using System.Collections; using System.Collections.Generic; using System.Net.Security; using System.Net.Sockets; using System.Security.Authentication; using System.Security.Cryptography.X509Certificates; namespace cAlgo { [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.FullAccess)] public class OnePositionClient : Robot { [Parameter("Username", DefaultValue = "")] public string Username { get; set; } [Parameter("Password", DefaultValue = "")] public string Password { get; set; } [Parameter("MoneyForSignalUSD", DefaultValue = 100, MinValue = 100)] public int MoneyForSignalUSD { get; set; } List<string> PosOpenID = new List<string>(); List<string> PosCloseID = new List<string>(); List<string> PosServerID = new List<string>(); List<string> PosServerAll = new List<string>(); public static string txt = ""; private static Hashtable certificateErrors = new Hashtable(); protected override void OnTick() { ConnectSSL("HelloServer" + Symbol); } //================================================================================================================ // End Send POST to HTTPS Server //================================================================================================================ // The following method is invoked by the RemoteCertificateValidationDelegate. public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { if (sslPolicyErrors == SslPolicyErrors.None) return true; Console.WriteLine("Certificate error: {0}", sslPolicyErrors); // Do not allow this client to communicate with unauthenticated servers. //return false; //Force ssl certyfikates as correct return true; } public void ConnectSSL(string msg = "") { txt = ""; try { TcpClient client = new TcpClient("localhost", 8080); // Create an SSL stream that will close the client's stream. SslStream sslStream = new SslStream(client.GetStream(), false, new RemoteCertificateValidationCallback(ValidateServerCertificate), null); try { sslStream.AuthenticateAsClient("ssl.breakermind.com"); } catch (AuthenticationException e) { Console.WriteLine("Exception: {0}", e.Message); if (e.InnerException != null) { Console.WriteLine("Inner exception: {0}", e.InnerException.Message); } Console.WriteLine("Authentication failed - closing the connection."); client.Close(); return; } int j = 10; byte[] messsage = Encoding.UTF8.GetBytes(msg + (char)j); // Send hello message to the server. Print("Send msg " + msg); sslStream.Write(messsage); sslStream.Flush(); // Read message from the server. int i = -1; while ((i = sslStream.ReadByte()) != 10) { txt = txt + (char)i; if (i == -1) { Console.WriteLine("Server says: {0}", txt); break; } } Console.WriteLine("Server says: {0}", txt); // Close the client connection. client.Close(); Console.WriteLine("Client closed."); } catch (ArgumentNullException e) { Print("ArgumentNullException: {0}", e); } catch (SocketException e) { Print("SocketException: {0}", e); } } public void Connect(string PosAll = "") { ///=========================================================== string pos = "SET#" + "1#"; //pos = pos + "SPREAD:" + Symbol.Spread + "|"; pos = pos + PosAll; // end of stream pos = pos + '\0'; // Process the data sent by the client. Print("String " + pos); ////=========================================================== try { TcpClient client = new TcpClient("localhost", 8080); Byte[] data = System.Text.Encoding.ASCII.GetBytes(pos); NetworkStream stream = client.GetStream(); stream.Write(data, 0, data.Length); Print("Sent: " + pos); data = new Byte[1024]; Int32 bytes = stream.Read(data, 0, data.Length); string responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes); Print("Received: {0}", responseData); // Close everything. stream.Close(); client.Close(); } catch (ArgumentNullException e) { Print("ArgumentNullException: {0}", e); } catch (SocketException e) { Print("SocketException: {0}", e); } } } } //==================================================================================================================== // Initialize Positions //====================================================================================================================
Server multi ssl
using System; using System.Threading; using System.Net; using System.Net.Sockets; using System.Text; using System.Text.RegularExpressions; using System.IO; using System.Net.Security; using System.Security.Cryptography.X509Certificates; using System.Security.Authentication; namespace server { public class server { private string positions = ""; // Declare a two dimensional array // users allowed 10 private static int maxSlots = 11; private string[,] posArray = new string[maxSlots + 1, 1]; X509Certificate serverCertificate = new X509Certificate2("ssl.p12", "KeyPass"); ManualResetEvent tcpClientConnected = new ManualResetEvent(false); static void DisplayCertificateInformation(SslStream stream) { Console.WriteLine("Certificate revocation list checked: {0}", stream.CheckCertRevocationStatus); X509Certificate localCertificate = stream.LocalCertificate; if (stream.LocalCertificate != null) { Console.WriteLine("Local cert was issued to {0} and is valid from {1} until {2}.", localCertificate.Subject, localCertificate.GetEffectiveDateString(), localCertificate.GetExpirationDateString()); } else { Console.WriteLine("Local certificate is null."); } // Display the properties of the client's certificate. X509Certificate remoteCertificate = stream.RemoteCertificate; if (stream.RemoteCertificate != null) { Console.WriteLine("Remote cert was issued to {0} and is valid from {1} until {2}.", remoteCertificate.Subject, remoteCertificate.GetEffectiveDateString(), remoteCertificate.GetExpirationDateString()); } else { Console.WriteLine("Remote certificate is null."); } } static string ReadMessage(SslStream sslStream) { // Read the message sent by the client. // The client signals the end of the message using the // "" marker. StringBuilder messageData = new StringBuilder(); int bytes = -1; do { // Read the client's test message. bytes = sslStream.ReadByte(); // Use Decoder class to convert from bytes to UTF8 // in case a character spans two buffers. Decoder decoder = Encoding.UTF8.GetDecoder(); char znak = (char)bytes; messageData.Append(znak); // Check for EOF or an empty message. if (messageData.ToString().IndexOf("") != -1) { break; } } while (bytes != 0); return messageData.ToString(); } void ProcessIncomingData(object obj) { SslStream sslStream = (SslStream)obj; //string ip = ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString(); //Console.WriteLine("Client IP : " + ip); string sb = ""; int i = -1; try { while (true) { int j = 10; //Console.WriteLine((char)j); while ((i = sslStream.ReadByte()) != 10) { sb = sb + (char)i; // Console.WriteLine("Stream in char " + i); if (i == -1) break; } Console.WriteLine("Client " + sb); byte[] messsage = Encoding.UTF8.GetBytes("Helloclient" + (char)j); // Send hello message to the server. sslStream.Write(messsage); sslStream.Flush(); } } catch (Exception e) { } } void ProcessIncomingConnection(IAsyncResult ar) { TcpListener listener = (TcpListener)ar.AsyncState; TcpClient client = listener.EndAcceptTcpClient(ar); SslStream sslStream = new SslStream(client.GetStream(), false); try { sslStream.AuthenticateAsServer(serverCertificate, false, SslProtocols.Tls, true); //DisplayCertificateInformation(sslStream); }catch(Exception e){ Console.WriteLine("Client no ssl" + client); client.Close(); } ThreadPool.QueueUserWorkItem(ProcessIncomingData, sslStream); tcpClientConnected.Set(); } public void start() { IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8080); TcpListener listener = new TcpListener(endpoint); listener.Start(); while (true) { tcpClientConnected.Reset(); listener.BeginAcceptTcpClient(new AsyncCallback(ProcessIncomingConnection), listener); tcpClientConnected.WaitOne(); } } } class Program { static void Main(string[] args) { Console.WriteLine("Multi user server. Recive save and send data to clients max 10 accounts."); //DateTime.Now.ToLongTimeString() Console.WriteLine(DateTime.Now + " Waiting for connections...."); try { server s = new server(); s.start(); } catch (Exception e) { } } } }
Thanks.
@mindbreaker
mindbreaker
13 Apr 2015, 14:33
RE:
Paul_Hayes said:
Hi,
If you are using the .NET framework version 4.5 look into the Task Parallel Library
The Task Parallel Library (TPL) is based on the concept of a task, which represents an asynchronous operation. In some ways, a task resembles a thread or ThreadPool work item, but at a higher level of abstraction. The term task parallelism refers to one or more independent tasks running concurrently
https://msdn.microsoft.com/en-us/library/dd537609%28v=vs.110%29.aspx
Just refactor your code to implement this architecture.
Thank you very much.
@mindbreaker
mindbreaker
22 Mar 2015, 10:25
RE:
mindbreaker said:
Hi,
How to get Week Open Price (or Open,Close,High,Low of week bar Timeframe W1)?
Thanks
or how change this indicator to show week lines not day lines?
// ----------------------------------------------------------------------------------------------- // // This is an example of how to plot the Daily Open and Close on a TimeFrame lower than Daily // // ----------------------------------------------------------------------------------------------- using System; using cAlgo.API; namespace cAlgo.Indicators { [Indicator(IsOverlay = true, AccessRights = AccessRights.None)] public class DailyOpenClose : Indicator { [Output("Open", Color = Colors.Wheat, PlotType = PlotType.Points)] public IndicatorDataSeries Open { get; set; } [Output("Close", Color = Colors.Blue, PlotType = PlotType.Points)] public IndicatorDataSeries Close { get; set; } public override void Calculate(int index) { if (index < 1) { // If first bar is first bar of the day set open if (MarketSeries.OpenTime[index].TimeOfDay == TimeSpan.Zero) Open[index] = MarketSeries.Open[index]; return; } DateTime openTime = MarketSeries.OpenTime[index]; DateTime lastOpenTime = MarketSeries.OpenTime[index - 1]; const string objectName = "messageNA"; if (!ApplicableTimeFrame(openTime, lastOpenTime)) { // Display message that timeframe is N/A const string text = "TimeFrame Not Applicable. Choose a lower Timeframe"; ChartObjects.DrawText(objectName, text, StaticPosition.TopLeft, Colors.Red); return; } // If TimeFrame chosen is applicable remove N/A message ChartObjects.RemoveObject(objectName); // Plot Daily Open and Close PlotDailyOpenClose(openTime, lastOpenTime, index); } private bool ApplicableTimeFrame(DateTime openTime, DateTime lastOpenTime) { // minutes difference between bars var timeFrameMinutes = (int)(openTime - lastOpenTime).TotalMinutes; bool daily = timeFrameMinutes == 1440; bool weeklyOrGreater = timeFrameMinutes >= 7200; bool timeFrameNotApplicable = daily || weeklyOrGreater; if (timeFrameNotApplicable) return false; return true; } private void PlotDailyOpenClose(DateTime openTime, DateTime lastOpenTime, int index) { double close; int i; // Day change if (openTime.Day != lastOpenTime.Day) { // Plot Open Open[index] = MarketSeries.Open[index]; // Plot previous day close close = MarketSeries.Close[index - 1]; i = index - 1; while (MarketSeries.OpenTime[i].Day == lastOpenTime.Day) { Close[i] = close; i--; } } // Same Day else { // Plot Open Open[index] = Open[index - 1]; } // Plot todays close DateTime today = DateTime.Now.Date; if (openTime.Date != today) return; close = MarketSeries.Close[index]; i = index; while (MarketSeries.OpenTime[i].Date == today) { Close[i] = close; i--; } } } }
Thanks
@mindbreaker
mindbreaker
19 Mar 2015, 13:20
All files Copier from trader contest to calgo and mt4
Hi,
https://github.com/breakermind/JForexSDKCopier
Bye
@mindbreaker
mindbreaker
i dont test it :) I dont have skype.04 May 2015, 22:36
@mindbreaker